Bug 记录: lognet4 生产环境不生效

77 阅读1分钟

描述:

调试时,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>

注意事项

  1. 可以通过删除日志文件夹的方式来判断lognet4是否正确加载配置;如果自动新建文件夹,说明lognet4正常加载;

相关链接

  1. C#使用Log4net实现将日志输出到控制台或者文本文档_C#教程_脚本之家 (jb51.net)