2017-03-27 88 views
0

app.config文件log4net的文件不会创建

<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> 

我在AssemblyInfo.cs中添加也

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

什么是app.config中的错误余did't获得日志文件,也是我在编写日志文件时没有发生任何错误。这是Windows应用程序。

我在Bin文件夹中搜索到的文件是否正确?

+0

这里看看http://stackoverflow.com/questions/756125/how -to-轨道下log4net的-问题 – Lanorkin

回答

1

你有2次失误在配置:

变化:

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

TO:

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

而且

变化:

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

TO:

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

Log4net sdk refference

关键查找必须括号内指定并直接 以下模式说明符,例如%属性{}用户

工作总的appender配置:

<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> 

和C#代码:

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(); 
     } 
    } 
} 
1

变化的app.config行:

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

这一个

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

然后确保你是在GlobalContext中设置LOGFILENAME,示例代码如下所示:

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

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

     logger.Debug("Test message"); 
    } 

参考这更多信息:https://www.codeproject.com/Tips/400224/Multiple-log-files-from-one-application-using-log

根据构建配置 - debug/release,您应该在BIN/debug或BIN/release文件夹中看到log.txt。