log4net 在 window 10 中运行良好,但在 windows 7 和 xp 中只能写入部分日志
log4net works well in window 10 but only wirte part of logs in windows 7 and xp
我在我的应用程序中使用 log4net 记录信息和错误,它在 windows 10 中运行良好,但在 windows 7 和 windows xp 中,它只写了一部分日志,如下所示
这是我的 log4net 配置,有人可以帮忙吗?
<log4net>
<logger name="logerror">
<level value="ALL" />
<appender-ref ref="ErrorAppender" />
</logger>
<logger name="loginfo">
<level value="ALL" />
<appender-ref ref="InfoAppender" />
</logger>
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\LogError\" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="100" />
<param name="MaxFileSize" value="10240" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd".htm"" />
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="<HR COLOR=red>%n异常时间:%d [%t] <BR>%n异常级别:%-5p <BR>%n异 常 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>" />
</layout>
</appender>
<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\LogInfo\" />
<param name="AppendToFile" value="true" />
<param name="MaxFileSize" value="10240" />
<param name="MaxSizeRollBackups" value="100" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd".htm"" />
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="<HR COLOR=blue>%n日志时间:%d [%t] <BR>%n日志级别:%-5p <BR>%n日 志 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>" />
</layout>
</appender>
</log4net>
我怀疑你指的是 ?
个字符。 ?
和 �
是尝试进行无效代码页转换时使用的替换字符,例如,从 Unicode 转换为无法处理所有字符的代码页。例如,尝试使用 Latin-1 代码页将日文或中文字符写入文件会将所有非拉丁字符替换为 ?
或 �
。
这似乎是这里的问题。默认情况下,log4net 使用 Default 编码(对应于系统的区域设置)来写入文件。
您可以使用 FileAppender.Encoding 属性:
显式指定编码
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<encoding value = "utf-8" />
<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
<encoding value = "utf-8" />
我在我的应用程序中使用 log4net 记录信息和错误,它在 windows 10 中运行良好,但在 windows 7 和 windows xp 中,它只写了一部分日志,如下所示
这是我的 log4net 配置,有人可以帮忙吗?
<log4net>
<logger name="logerror">
<level value="ALL" />
<appender-ref ref="ErrorAppender" />
</logger>
<logger name="loginfo">
<level value="ALL" />
<appender-ref ref="InfoAppender" />
</logger>
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\LogError\" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="100" />
<param name="MaxFileSize" value="10240" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd".htm"" />
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="<HR COLOR=red>%n异常时间:%d [%t] <BR>%n异常级别:%-5p <BR>%n异 常 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>" />
</layout>
</appender>
<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\LogInfo\" />
<param name="AppendToFile" value="true" />
<param name="MaxFileSize" value="10240" />
<param name="MaxSizeRollBackups" value="100" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd".htm"" />
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="<HR COLOR=blue>%n日志时间:%d [%t] <BR>%n日志级别:%-5p <BR>%n日 志 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>" />
</layout>
</appender>
</log4net>
我怀疑你指的是 ?
个字符。 ?
和 �
是尝试进行无效代码页转换时使用的替换字符,例如,从 Unicode 转换为无法处理所有字符的代码页。例如,尝试使用 Latin-1 代码页将日文或中文字符写入文件会将所有非拉丁字符替换为 ?
或 �
。
这似乎是这里的问题。默认情况下,log4net 使用 Default 编码(对应于系统的区域设置)来写入文件。
您可以使用 FileAppender.Encoding 属性:
显式指定编码<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<encoding value = "utf-8" />
<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
<encoding value = "utf-8" />