C# Log4Net控制台应用按日志级别生成控制台颜色失败并崩溃
解决Log4Net ColoredConsoleAppender导致应用崩溃的问题
你遇到的崩溃问题大概率是配置文件里的语法错误导致的,我帮你找出了两处关键问题:
1. 不完整的颜色配置
看你INFO级别的foreColor值:
<foreColor value="Green, HighIntens..."/>
这里的HighIntens...是截断的写法,正确的应该是HighIntensity。Log4Net在解析这个不完整的颜色修饰符时会抛出异常,直接导致应用启动崩溃。
2. 配置规范检查
除了截断问题,还要确保所有颜色相关的配置都符合Log4Net的要求:
- 颜色值必须是Log4Net支持的合法选项,比如
Black、Blue、Green、Orange、Red等 - 修饰符(
HighIntensity、NoBold)要和颜色用逗号分隔,格式要完整
修正后的完整配置
把你的配置修改成下面这样,应该就能解决崩溃问题:
<log4net> <appender name="ConsoleAppender" type="log4net.Appender.ColoredConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="[%date] [%level] [%logger/%method] → %message%newline%exception"/> </layout> <mapping> <level value="DEBUG" /> <foreColor value="Orange, HighIntensity" /> </mapping> <mapping> <level value="INFO" /> <foreColor value="Green, HighIntensity"/> </mapping> <!-- 可按需补充其他级别的映射 --> <mapping> <level value="WARN" /> <foreColor value="Yellow, HighIntensity" /> </mapping> <mapping> <level value="ERROR" /> <foreColor value="Red, HighIntensity" /> </mapping> </appender> <!-- 必须配置root logger关联控制台Appender才能生效 --> <root> <level value="DEBUG"/> <appender-ref ref="ConsoleAppender"/> </root> </log4net>
额外排查技巧
如果还是有问题,可以开启Log4Net的内部调试来获取更详细的错误信息:
- 在你的
app.config的<appSettings>节点里添加:
<add key="log4net.Internal.Debug" value="true"/>
- 启动应用后,控制台会输出Log4Net的内部调试日志,从中可以定位具体的解析错误点。
内容的提问来源于stack exchange,提问作者user979033
相关产品推荐
相关产品推荐

