লগ 4 নেট লগ ফাইলটিতে লগটি লেখেন না


159

আমি লগ 4 নেট ব্যবহার করে একটি সাধারণ দৃশ্য তৈরি করেছি, তবে মনে হচ্ছে লগ ফাইলে বার্তা যুক্ত না হওয়ার কারণে আমার লগ অ্যাপেন্ডাররা কাজ করে না।

আমি ওয়েব কোডফাইগ ফাইলটিতে নিম্নলিখিতগুলি যুক্ত করেছি:

<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false"/>        
</configSections>

<log4net>
    <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
            <file value="D:\MyData\Desktop\LogFile.txt" />
            <appendToFile value="true" />
            <encoding value="utf-8" />
            <layout type="log4net.Layout.SimpleLayout" />
    </appender>


    <root>
        <level value="INFO" />
        <appender-ref ref="LogFileAppender" />
    </root>
</log4net>

গ্লোবাল ASAX ফাইলের মধ্যে আমি যুক্ত করেছি:

ILog logger = LogManager.GetLogger(typeof(MvcApplication));

এবং অ্যাপ্লিকেশন_সার্ট পদ্ধতির মধ্যে:

logger.Info("Starting the application...");

কেন পরীক্ষার লগ "অ্যাপ্লিকেশন শুরু হচ্ছে ..." লগ ফাইলে যুক্ত হচ্ছে না?

উত্তর:


316

তুমি কি ফোন কর?

log4net.Config.XmlConfigurator.Configure();

কোথাও লগ 4 নেট আপনার কনফিগারেশনটি পড়তে পারেন? গ্লোবাল.এক্সএক্স-তে উদাহরণ:

void Application_Start(object sender, EventArgs e) 
{
    // Code that runs on application startup

    // Initialize log4net.
    log4net.Config.XmlConfigurator.Configure();
}

4
আপনাকে প্রচুর ধন্যবাদ জানাই, এটিতে আমার নীচের লাইনটি ছিল: log4net.Config.BasicConfigurator.Configure (); আমি যদি লগ 4 নেট কনফিগার করতে ওয়েবকনফিগের পরিবর্তে সি # কনফিগারেশন ব্যবহার করি তবে কি আমি এটি কল করব? এটি কি "কনফিগার" -মাথোড কলটি যে কোনও উপায়ে প্রয়োজন কারণ অনেক টিউটোরিয়ালে আমি কোডের এই লাইনটি পাইনি।
84

9
কনফিগারেশনটি কোথায় খুঁজতে হবে লগ 4নেটকে বলার অসংখ্য উপায় রয়েছে, লগিং.এপাচি.আর.এল.গ্লগনেট / রিলিজ / ম্যানুয়াল / কনফিগারেশন । Html দেখুন । XMLConfigurator.Configure () কে কল করা <app.exe> ​​.config বা ওয়েব কোডফিগের কনফিগারেশনের জন্য লগ 4 নেট চেহারা তৈরি করবে। বেসিক কনফিগ্রেটার. কনফিগুরে (এসডিকে ডক্স অনুসারে): "কনসোলঅ্যাপেন্ডার ব্যবহার করে লগ 4 নেট লগিং সিস্টেমটি সূচনা করে যা কনসোল.আউটকে লিখবে।"
আন্দ্রেয়াস পলসন

এফওয়াইআই - আপনি যদি লগ 4 নেট ব্যবহার করতে পারেন তবে কনফিগ.ব্যাসিক কনফিগ্রেটারটি যদি আপনি এটি ভিত্তিক ফাইলটি না চান তবে ব্যবহার করতে পারেন। আউটপুট কনসোলে প্রেরণ করা হয়।
সিলভারআর্ক

1
আমি AssemblyInfoফাইল কনফিগারেশন করছি । নীচে একটি উত্তর হিসাবে পোস্ট।
LCJ

আরগ, এর মধ্যে অনেকগুলি প্রশ্নের সন্ধান পেয়েছে এবং যে কোনও জায়গায় প্রকৃত লগ ফাইলগুলি কোথায় পাওয়া যাবে তা উল্লেখ করতে ব্যর্থ হয়েছে ... এটি কি এতই স্পষ্ট যে ইতিমধ্যে সবাই জানেন?
মিস্টারফক্স

50

এই FAQ পৃষ্ঠাটি ব্যবহার করুন: অ্যাপাচি লগ 4 নেট প্রায়শই জিজ্ঞাসিত প্রশ্ন

প্রায় 3/4 পথ নামার সময় এটি আপনাকে অ্যাপ্লিকেশন ট্রেসিং ব্যবহার করে লগ 4 নেট ডিবাগিং সক্ষম করার পদ্ধতি সম্পর্কে জানায়। এটি আপনাকে জানাবে যে আপনার সমস্যা কোথায়।

বেসিকগুলি হ'ল:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="log4net.Internal.Debug" value="true"/>
    </appSettings>
</configuration>

এবং আপনি স্ট্যান্ডার্ড আউটপুটে ট্রেস দেখতে পাবেন


1
ধন্যবাদ আমি প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী পরীক্ষা করেছি কিন্তু এগুলি আমার সমস্যার সমাধান করতে পারেনি।
84

1
এই উত্তরের জন্য ধন্যবাদ আমি সনাক্ত করতে সক্ষম হয়েছি যে আমার rootবিভাগটি ভুল লগারকে নির্দেশ করছে!
সবিস্কুট

দুর্দান্ত টিপ আমি দেখেছি যে অ্যাসপেট ব্যবহারকারীটির জন্য অ্যাক্সেস অস্বীকার করা হয়েছিল
ব্লু ক্লাউডস

<log4net> <অভ্যন্তরীণ> <ডিবাগ মান = "সত্য"> </ ডিবাগ> </ অভ্যন্তরীণ> </ log4net>: যদি এটা কেউ কাজ করে না, তাহলে এই ব্যবহার করতে আমার পথ চেষ্টা করুন
himanshupareek66

35

@ অ্যান্ড্রেসপলসন যেমন পরামর্শ দিয়েছেন, আমাদের এটি কনফিগার করতে হবে। আমি AssemblyInfoফাইল কনফিগারেশন করছি । আমি configuration file nameএখানে নির্দিষ্ট ।

// Log4Net Configuration.
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

9
আমার যদি এই এবং log4net.Config.XMLConfigurator.Configure () উভয়ই থাকে তবে কি হবে; ভার?
n00b

1
@ n00b, তারপরে আমরা এই লাইনটি মন্তব্য করতে পারি, এটি কেবলমাত্র এইভাবেই আমার সাথে কাজ করেছিল "log4net.Config.XMLConfigurator.Configure ();", এবং আরও একটি বিষয়: আমি এটি আমার ওয়েবকনফিগ সেটিংসেও যুক্ত করেছি <কী যোগ করুন = "log4net.Intern.Debug" value = "true" />
himanshupareek66

33

এছাড়াও, " লগ 4 নেট] .কনফিগের জন্য " সর্বদা অনুলিপি করুন " বিকল্পটি নির্বাচিত হয়েছে তা নিশ্চিত করুন

এখানে চিত্র বর্ণনা লিখুন


1
এটা আমার জন্য স্থির ছিল। আমি সবসময় এই সেটিংটি ভুলে যাই।
66

25

নিশ্চিত হয়ে নিন যে প্রক্রিয়াটি (অ্যাকাউন্ট) এর অধীনে চলছে এবং আউটপুট ডিরেক্টরিতে লেখার সুযোগ রয়েছে।

আইআইএস In এবং এর উপরে এটি অ্যাপ্লিকেশন পুলে কনফিগার করা থাকে এবং সাধারণত অ্যাপপুল পরিচয় হয় , যা সাধারণত সমস্ত ডিরেক্টরিতে লেখার অনুমতি পাবে না।

কোনও ব্যতিক্রম ছুঁড়েছিল কিনা তা দেখতে আপনার ইভেন্ট লগগুলি (অ্যাপ্লিকেশন এবং সুরক্ষা) পরীক্ষা করুন।


আপনার সহায়তার জন্য ধন্যবাদ, এছাড়াও আমি অনুমতি সমস্যার কথা ভেবেছিলাম তবে আমি ফোল্ডারে সেট করেও যদি এটি কাজ করে না এমন প্রত্যেককে অনুমতি পড়তে, লিখতে, সংশোধন করতে এবং কার্যকর করা হয়।
john84

@ জন 84 - আপনি কি ব্যতিক্রম পাচ্ছেন? আপনি ইভেন্ট লগ তাকান?
ওপেন

এছাড়াও গুরুত্বপূর্ণ, যেমনটি আমি সন্ধান করেছি, একটি নির্দিষ্ট অ্যাকাউন্টের অধীনে একটি উইন্ডোজ পরিষেবা চলছে running
বব ম্যাক

অনেক ধন্যবাদ যে আমাকে অনেক সাহায্য করেছে।
আব্বাস

20

প্রবেশ করান:

 [assembly: log4net.Config.XmlConfigurator(Watch = true)]

এসেম্বলিআইএনফো ফাইলের শেষে


এটি আমার উদ্ধার ছিল। একটি ডেস্কটপ ফর্ম প্রকল্প করছেন এবং log4net.Config.XMLConfigurator.Configure () স্থাপন করা; মূলত সাহায্য করা হয়নি। ধন্যবাদ
টমাস হেসে

এটি আমাকে সাহায্য করেছে। ওয়েবকনফিগে আমার কনফিগারেশন ছিল তবে লগ 4 নেট মনে হয়েছে যে পরিবর্তনগুলি করা হয়নি। আমি যোগ "ওয়াচ = true" যে অ্যাট্রিবিউট প্রয়োজন এবং কাজ শুরু anithing
Albe

3

আমার জন্য আমি লগ-ফাইলের অবস্থান সরিয়েছি এবং এটি তখনই যখন আমি ফাইলটির নাম পরিবর্তন করে অন্য কোনও কিছুতে শুরু করেছিলাম এটি আবার শুরু হয়েছিল।

মনে হচ্ছে যদি ইতিমধ্যে বিদ্যমান একই নামের লগফিল থাকে তবে কিছুই হয় না।

এরপরে আমি পুরানো ফাইলটির পুনরায় নামকরণ করেছি এবং কনফিগারেশনে লগ ফাইলের নামটি আবার যা ছিল তা পরিবর্তিত করেছি।


2

আমার ক্ষেত্রে, লগ 4 নেট আমার প্রকল্পের নামে একটি জায়গা থাকার কারণে সঠিকভাবে লগইন করছিল না। একই কোডটি কেন একটি ভিন্ন প্রকল্পে ঠিক কাজ করেছিল, তবে নতুনটিতে হয়নি me শূন্যস্থানের। একটি সহজ জায়গা।

সুতরাং, প্রকল্পের নামের জায়গাগুলি সাবধান করুন। আমি আমার পাঠ শিখেছি।


1
আপনার এই সমস্যাটি কোথায় ছিল? লগ 4 নেট একটি প্রকল্পে দুর্দান্ত কাজ করছে, তবে অন্যটিতে নয় ... কেন জানি না। টিসস
পাসক্যাল

2

আমার ক্ষেত্রে আমাকে IIS_IUSRSলগ ফাইলে পড়ার \ লেখার অনুমতি দিতে হয়েছিল।


1

নিম্নলিখিত লাইন কোডটি এসেম্বলিআইএনফো ফাইলগুলিতে থাকা উচিত তা নিশ্চিত করুন।

[সমাবেশ: log4net.Config.XMLConfigurator (কনফিগারফিল = "ওয়েবকনফিগ", দেখুন = সত্য)]

এবং এপ্লিকেশন_স্টার্ট () পদ্ধতিতে এই লাইনটি পরীক্ষা করে দেখুন।

log4net.Config.XmlConfigurator.Configure();

0

আপনার কনফিগারেশন ফাইলটি সঠিক বলে মনে হচ্ছে। তারপরে, আপনাকে আপনার লগ 4 নেট কনফিগারেশন ফাইলটি প্রয়োগ করতে হবে। সুতরাং আপনি নীচের কোড ব্যবহার করতে পারেন:

var logRepo = LogManager.GetRepository(Assembly.GetEntryAssembly());
XmlConfigurator.Configure(logRepo, new FileInfo("log4net.config"));

প্রক্রিয়া নিবন্ধকরণের পরে, আপনি লগার কল করতে সংজ্ঞায় নীচে কল করতে পারেন:

private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

log.Error("Sample log");

0

আমার জন্য আমাকে লগারকে একটি নুগেট প্যাকেজে নিয়ে যেতে হয়েছিল। নুগেট প্যাকেজ প্রকল্পে নীচে কোড যুক্ত করা দরকার।

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config")]

আরও তথ্যের জন্য https://gurunadhduvvuru.wordpress.com/2020/04/30/log4net-issues-when-moved-it-to-a-nuget-package/ দেখুন ।


উত্তর হিসাবে লিঙ্ক এড়ানোর চেষ্টা করুন। তারা সবসময় কাজ নাও করতে পারে। লিঙ্কে তথ্যের সংক্ষিপ্তসার অন্তর্ভুক্ত করার জন্য সম্ভবত আপনার উত্তরটি সম্পাদনা করুন।
ডেরেক সি।

0

লগ 4 নেট ব্যবহারের কয়েকটি উপায় রয়েছে। আমি সন্ধান করার সময় এটি দরকারী বলে মনে করি। সমাধানটি এখানে বর্ণিত হয়েছে: https://www.hemelix.com/log4net/

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.