Log4Net 未在发布模式下记录错误(.net 控制台 APP)
Log4Net not logging error in release mode (.net console APP)
您好,我在控制台应用程序中使用 Log4Net
这里是汇编文件中的配置
[程序集:log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
下面是log4net.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net>
<appender name="InfoRollingLogFileAppender"
type="log4net.Appender.RollingFileAppender,log4net">
<param name="File" value="WarningLogger.txt" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="10" />
<param name="MaximumFileSize" value="10240KB" />
<param name="RollingStyle" value="Size" />
<param name="StaticLogFileName" value="true" />
<param name="Threshold" value="DEBUG"/>
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%p [%d{dd MMM HH:mm:ss}][%l]- %m%n" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="WARN" />
<levelMax value="WARN" />
</filter>
</appender>
<root>
<level value="debug" />
<appender-ref ref="InfoRollingLogFileAppender" />
<appender-ref ref="ErrorRollingLogFileAppender" />
</root>
</log4net>
</configuration>
为了初始化 log4net,我使用以下配置。
private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
这东西在调试模式下完美运行。相同的配置在发布模式下不起作用。
如果有任何解决方案请告诉我
当您的静态方法初始化时,没有 GetCurrentMethod().DeclaringType。这可能就是它在发布模式下不起作用的原因。
通过在控制台中的启动文件或程序文件中添加配置解决了问题。
XmlConfigurator.Configure(new FileInfo(ConfigurationManager.AppSettings["log4net-config-file"]));
您好,我在控制台应用程序中使用 Log4Net
这里是汇编文件中的配置
[程序集:log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
下面是log4net.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net>
<appender name="InfoRollingLogFileAppender"
type="log4net.Appender.RollingFileAppender,log4net">
<param name="File" value="WarningLogger.txt" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="10" />
<param name="MaximumFileSize" value="10240KB" />
<param name="RollingStyle" value="Size" />
<param name="StaticLogFileName" value="true" />
<param name="Threshold" value="DEBUG"/>
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%p [%d{dd MMM HH:mm:ss}][%l]- %m%n" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="WARN" />
<levelMax value="WARN" />
</filter>
</appender>
<root>
<level value="debug" />
<appender-ref ref="InfoRollingLogFileAppender" />
<appender-ref ref="ErrorRollingLogFileAppender" />
</root>
</log4net>
</configuration>
为了初始化 log4net,我使用以下配置。
private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
这东西在调试模式下完美运行。相同的配置在发布模式下不起作用。
如果有任何解决方案请告诉我
当您的静态方法初始化时,没有 GetCurrentMethod().DeclaringType。这可能就是它在发布模式下不起作用的原因。
通过在控制台中的启动文件或程序文件中添加配置解决了问题。
XmlConfigurator.Configure(new FileInfo(ConfigurationManager.AppSettings["log4net-config-file"]));