log4net 滚动文件附加器不工作
log4net rolling file appender not working
我有以下配置:
<log4net>
<root>
<level value="All"/>
<appender-ref ref="RollingFileAppender"/>
</root>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="mylog.log"/>
<appendToFile value="true"/>
<preserveLogFileNameExtension value="true"/>
<rollingStyle value="Composite"/>
<datePattern value=".yyyyMMdd"/>
<maximumFileSize value="5MB"/>
<countDirection value="1"/>
<maxSizeRollBackups value="-1"/>
<staticLogFileName value="false"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline"/>
</layout>
</appender>
</log4net>
以及 global.asax 中的以下代码:
Sub Application_Start()
AreaRegistration.RegisterAllAreas()
RegisterGlobalFilters(GlobalFilters.Filters)
RegisterRoutes(RouteTable.Routes)
BasicConfigurator.Configure();
LogManager.GetLogger(typeof(Global_asax)).Error("Logger configured")
End Sub
对于上面配置中的标签文件。我试过 C:\my folder\mylog.log 以及上面看到的 mylog.log
但是,我没有看到这个文件在任何地方生成,也没有异常。
环境:VS 2013 ASP.Net VB。 运行 通过调试菜单。当我 运行 IISExpress 由 VS2013 和站点 运行s 启动时。但是没有看到日志。
我尝试了文件标签的各种组合,但没有任何效果。
有人可以帮忙吗?
你应该打开 log4net 的内部调试来找出失败的原因...
样本web.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="C:\log4net_internal.log"/>
</listeners>
</trace>
</system.diagnostics>
</configuration>
故障排除部分提供了更多信息here。
这曾经对我有用(我已经切换到更轻巧且可配置性更好的 NLog),日志每天滚动,写在应用程序路径下名为 "Logs" 的子文件夹中。
<appender name="RollingDebugAppender" type="log4net.Appender.RollingFileAppender">
<file value="Logs\" />
<datePattern value="yyyy-MM-dd'-FULL.log'" />
<staticLogFileName value="false" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<maxSizeRollBackups value="100" />
<maximumFileSize value="5MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
这是我最终所做的工作的最终版本:
<log4net>
<root>
<level value="ALL"/>
<appender-ref ref="RollingFileAppender"/>
</root>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logs\log4net.log"/>
<datePattern value="yyyy-MM-dd'-FULL.log'" />
<appendToFile value="true"/>
<preserveLogFileNameExtension value="true"/>
<rollingStyle value="Size"/>
<maximumFileSize value="250KB"/>
<maxSizeRollBackups value="-1"/>
<staticLogFileName value="false"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline"/>
</layout>
</appender>
</log4net>
和
XmlConfigurator.Configure()
LogManager.GetLogger(typeof(Global_asax)).Error("Logger configured")
这记录到 log\log4net.log 在应用程序目录中(即我的代码所在的位置)
*_%date{yyyyMMdd}.log
下面是关键,如果缺少这个你会看到像上面这样的日志
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="C:\log4net_internal.log"/>
**<staticLogFileName value="false" />**
</listeners>
</trace>
</system.diagnostics>
</configuration>
我有以下配置:
<log4net>
<root>
<level value="All"/>
<appender-ref ref="RollingFileAppender"/>
</root>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="mylog.log"/>
<appendToFile value="true"/>
<preserveLogFileNameExtension value="true"/>
<rollingStyle value="Composite"/>
<datePattern value=".yyyyMMdd"/>
<maximumFileSize value="5MB"/>
<countDirection value="1"/>
<maxSizeRollBackups value="-1"/>
<staticLogFileName value="false"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline"/>
</layout>
</appender>
</log4net>
以及 global.asax 中的以下代码:
Sub Application_Start()
AreaRegistration.RegisterAllAreas()
RegisterGlobalFilters(GlobalFilters.Filters)
RegisterRoutes(RouteTable.Routes)
BasicConfigurator.Configure();
LogManager.GetLogger(typeof(Global_asax)).Error("Logger configured")
End Sub
对于上面配置中的标签文件。我试过 C:\my folder\mylog.log 以及上面看到的 mylog.log
但是,我没有看到这个文件在任何地方生成,也没有异常。
环境:VS 2013 ASP.Net VB。 运行 通过调试菜单。当我 运行 IISExpress 由 VS2013 和站点 运行s 启动时。但是没有看到日志。
我尝试了文件标签的各种组合,但没有任何效果。
有人可以帮忙吗?
你应该打开 log4net 的内部调试来找出失败的原因...
样本web.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="C:\log4net_internal.log"/>
</listeners>
</trace>
</system.diagnostics>
</configuration>
故障排除部分提供了更多信息here。
这曾经对我有用(我已经切换到更轻巧且可配置性更好的 NLog),日志每天滚动,写在应用程序路径下名为 "Logs" 的子文件夹中。
<appender name="RollingDebugAppender" type="log4net.Appender.RollingFileAppender">
<file value="Logs\" />
<datePattern value="yyyy-MM-dd'-FULL.log'" />
<staticLogFileName value="false" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<maxSizeRollBackups value="100" />
<maximumFileSize value="5MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
这是我最终所做的工作的最终版本:
<log4net>
<root>
<level value="ALL"/>
<appender-ref ref="RollingFileAppender"/>
</root>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logs\log4net.log"/>
<datePattern value="yyyy-MM-dd'-FULL.log'" />
<appendToFile value="true"/>
<preserveLogFileNameExtension value="true"/>
<rollingStyle value="Size"/>
<maximumFileSize value="250KB"/>
<maxSizeRollBackups value="-1"/>
<staticLogFileName value="false"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline"/>
</layout>
</appender>
</log4net>
和
XmlConfigurator.Configure()
LogManager.GetLogger(typeof(Global_asax)).Error("Logger configured")
这记录到 log\log4net.log 在应用程序目录中(即我的代码所在的位置)
*_%date{yyyyMMdd}.log
下面是关键,如果缺少这个你会看到像上面这样的日志
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="C:\log4net_internal.log"/>
**<staticLogFileName value="false" />**
</listeners>
</trace>
</system.diagnostics>
</configuration>