log4net将在哪里创build这个日志文件?

当我将文件的值设置为logs\log-file.txt ,它会在哪里创build这个文件夹? 在/bin目录中?

我的web.config如下所示:

 <log4net> <appender name="FileAppender" type="log4net.Appender.FileAppender"> <file value="logs\log-file.txt" /> <appendToFile value="true" /> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout> </appender> </log4net> 

这是正确的方法来logging:

 ILog logger = LogManager.GetLogger(typeof(CCController)); logger.Error("Some Page", ex); // where ex is the exception instance 

如果你想把你的日志文件放在一个指定的位置,这个位置在运行时会被确定,那么你可以将它作为你的项目输出目录,那么你可以用这种方式configuration你的.config文件

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

然后在调用log4net configure之前的代码中,设置如下的新path

  log4net.GlobalContext.Properties["LogFileName"] = @"E:\\file1"; //log file path log4net.Config.XmlConfigurator.Configure(); 

它有多简单? 🙂

它会在您的项目/解决scheme的根目录中创build该文件。

您可以在应用程序的web.config中指定select的位置,如下所示:

  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="c:/ServiceLogs/Olympus.Core.log" /> <appendToFile value="true" /> <rollingStyle value="Date" /> <datePattern value=".yyyyMMdd.log" /> <maximumFileSize value="5MB" /> <staticLogFileName value="true" /> <lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" /> <maxSizeRollBackups value="-1" /> <countDirection value="1" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %-5level [%thread] %logger - %message%newline%exception" /> </layout> </appender> 

文件标签指定了位置。

文件的值可以是绝对path,如“c:\ logs \ log.txt”,或者我相信相对于bin目录的相对path。

就实施而言,我通常会将以下内容放在我计划login的任何课程的顶部:

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

最后,你可以像这样使用它:

 Log.Debug("This is a DEBUG level message."); 

Log4net正在保存到您的项目文件夹中。 例如: \SolutionFolder\ProjectFolder\bin\SolutionConfiguration\logs\log-file.txt

哪里:

  • SolutionFolder是您保存解决scheme的地方
  • ProjectFolder是您的项目进入解决scheme的文件夹
  • SolutionConfiguration是包含项目所有二进制文件的文件夹(默认是Debug或Release)

希望这可以帮助!

对于日志文件夹和文件的东西,去@Bens答案 。

不过,我会评论创build日志部分。 伊莫没有正确的方法。 当手工编写logging器时,我是这样做的:

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

因为它简短而简洁。

也就是说,我不会在这些类的内部创buildlogging器实例, 我让我的IoC容器为我注入 。

 FileAppender appender = repository.GetAppenders().OfType<FileAppender>().FirstOrDefault(); if (appender != null) logger.DebugFormat("log file located at : {0}", appender.File); else logger.Error("Could not locate fileAppender"); 

我认为你的示例是保存到你的项目文件夹,除非默认的IIS或.NET用户已经创build权限,那么它将无法创build日志文件夹。

我会先创build日志文件夹,并允许iis用户的完全权限,看看是否正在创build日志文件。