描述:
调试时,lognet4配置正常运行,但一旦把程序打包,配置就失效了,完全生成不了日志文件
原因:
打包后,lognet4找不到配置文件,需要将配置文件路径改为绝对路径
改动前:
log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(`log4net.config`));
改动后:
// 程序的绝对路径,生产环境中可以根据注册表来读取;
string AssemblyPath = null;
string file = Path.Combine(AssemblyPath, "log4net.config");
log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(file));
配置文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<log4net>
<appender name="LogFileAppenderBySize" type="log4net.Appender.RollingFileAppender">
<!--是否续写-->
<param name="AppendToFile" value="true" />
<!--记录日志写入文件时,不锁定文本文件,防止多线程时不能写Log-->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--按照文件的大小进行变换日志文件-->
<param name="RollingStyle" value="Size" />
<!--日志文件存放路径,${APPDATA}=%APPDATA%=C:\Users\Administrator\AppData\Roaming-->
<!--<param name="File" value="F:\\Desktop\\asposelog.txt" />-->
<!--<param name="File" value="%property{fileName}" />-->
<param name="File" value="${APPDATA}\\test\\log\\log.txt" />
<!--<file type="log4net.Util.PatternString" value="%property{fileName}"/>-->
<!--单个文件最大数量-->
<param name="MaximumFileSize" value="2MB" />
<!--保留的log文件数量-->
<param name="MaxSizeRollBackups" value="5" />
<layout type="log4net.Layout.PatternLayout">
<!--<param name="ConversionPattern" value="[%d] %m %n %c" />-->
<!--<param name="ConversionPattern" value="[%d] '%type.%method' %-5p: %m %n" />-->
<param name="ConversionPattern" value="[%d] %-5p: %m %n" />
</layout>
</appender>
<root>
<!--<level value="ALL" />-->
<level value="ALL" />
<appender-ref ref="LogFileAppenderBySize" />
</root>
</log4net>
</configuration>
注意事项
- 可以通过删除日志文件夹的方式来判断lognet4是否正确加载配置;如果自动新建文件夹,说明lognet4正常加载;