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日志文件。