简体   繁体   中英

log4Net File not created

App.Config File

    <log4net>
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
        <file type="log4net.Util.PatternString" value="%property[LogFileName]"/>
        <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
        <appendToFile value="true"/>
        <rollingStyle value="Size"/>
        <maxSizeRollBackups value="10000"/>
        <maximumFileSize value="10MB"/>
        <staticLogFileName value="true"/>
        <layout type="log4net.Layout.PatternLayout">
            <param name="CoversionPattern" value="%date [%thread] : %message%newline%exception"/>
        </layout>
    </appender>
    <root>
        <level value="ALL"></level>
        <appender-ref ref="LogFileAppender"/>
    </root>
</log4net>

i added in assemblyinfo.cs also

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

What is the error in app.config i did't get log file and also i did't get any error while writing log file. That's the windows application.

I searched file in Bin folder is it correct?

Change app.config line:

<file type="log4net.Util.PatternString" value="%property[LogFileName]"/>

to this one

<file type="log4net.Util.PatternString" value=".\%property{LogFileName}" />

Then ensure you are setting logFilename in globalcontext, sample code looks like this:

static void Main(string[] args)
    {
        log4net.GlobalContext.Properties["LogFileName"] = "log.txt";

        log4net.ILog logger = log4net.LogManager.GetLogger("Tests");

        logger.Debug("Test message");
    }

Refer this for more info: https://www.codeproject.com/Tips/400224/Multiple-log-files-from-one-application-using-log

Depending on build configuration - debug/release, you should see log.txt in BIN/debug or BIN/release folder.

You have 2 mistakes in the config:

Change:

<param name="CoversionPattern" value="%date [%thread] : %message%newline%exception"/>

TO:

<conversionPattern value="%date{ABSOLUTE} [%logger] %level - %message%newline%exception"/>

And

Change:

 <file type="log4net.Util.PatternString" value="%property[LogFileName]"/>

TO:

<file type="log4net.Util.PatternString" value="C:\MyLogs\%property{LogFileName}.txt"/>

From Log4net sdk refference

The key to lookup must be specified within braces and directly following the pattern specifier, eg %property{user}

Total working appender config:

<appender name="RollingFileAppender" type="log4net.appender.RollingFileAppender">
            <file type="log4net.Util.PatternString" value="C:\MyLogs\%property{LogFileName}.txt"/>
            <appendToFile value="true"/>
            <rollingStyle value="Size"/>
            <maximumFileSize value="10MB"/>
            <maxSizeRollBackups value="5"/>
            <staticLogFileName value="true"/>
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%date{ABSOLUTE} [%logger] %level - %message%newline%exception"/>
            </layout>
        </appender>

And c# code:

using System;

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

namespace Log4NetConsoleApplication
{
    class Program
    {

        static void Main(string[] args)
        {
            log4net.GlobalContext.Properties["LogFileName"] = "log";    

            log4net.ILog log = LogHelper.GetLogger();

            Console.WriteLine("hello world");

            log.Error("This is my error message");

            Console.ReadLine();
        }
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM