我有一个C#Framework 4.5.2项目,使用log4net v2.0.8(通过NuGet安装),我读过至少十个不同但相似的问题,但没有一个解决了我的问题。当然,我可以成功写入日志附加器,但筛选/阈值不起作用。我有一个单独的记录器(使用ROOT或命名实例),并设置了不同的阈值/过滤器,这些阈值/过滤器应引导实际日志使用特定的附加程序(即文件、db、smtp等)。这样,特定级别的筛选器值可能仅由单个附加器处理。对于测试,我只是尝试使用ADO appender获取警告和高于阈值的信息,而文件appender记录信息(和高于阈值)。所以,当我测试一个信息日志方法时,它不应该在数据库中结束,但它总是这样。所以,不知怎么的,我把配置搞错了。以下是我看过的几篇文章,它们给了我深刻的见解,但不是解决方案:
这里有一些代码:
配置:
<!--<root>
</root>-->
<logger name="Logger">
<appender-ref ref="LogFileAppender"/>
<appender-ref ref="AdoNetAppender"/>
</logger>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="c:\temp\logging\derp.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %property{ProjectName} (%logger) - %message%newline" />
</layout>
<!--<threshold value="Info" />-->
</appender>
我试过在记录器部分的appender ref中设置阈值,我直接在appender中设置了阈值。我使用了LevelMatchfilter,同时使用了level和levelMin/levelMax(见下文)。LevelRange过滤器,什么都没有。没有什么能正常工作。
<filter type="log4net.Filter.LevelMatchFilter">
<levelMin value="Warning" />
<levelMax value="Fatal" />
</filter>
<threshold value="Warning" />
我尝试过整合Evaluator,但不起作用。
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="ERROR" />
</evaluator>
网上的例子大部分都是5年前的,经常说v1.2,是不是这个的更新版本里有什么东西,还是我只是漏掉了别的,或者做的顺序不对?感谢任何帮助。谢谢大家!
我看到两件事。首先,它是警告,而不是警告。
<filter type="log4net.Filter.LevelMatchFilter">
<levelMin value="WARN" />
<levelMax value="Fatal" />
</filter>
第二,像这样添加根。
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="AdoNetAppender" />
</root>
我们有两个不同的ASP.NET应用程序启用了Log4net日志记录。它们都有相同的log4net1.2.10.0版本。
如何在SL4J中配置日志记录?我的项目有很多类:class1、class2、Class3....我想做两件事:将所有类记录到一个名为FILE1的文件追加器中,并具有警告级别(class1、class2、class3...)将一个名为class1的类记录到具有调试级别的名为FILE2的文件追加器中。 问题是,当我将class1的记录器配置为具有WARN级别的FILE1 appender时,我不知道如
我正在使用2个appender-控制台和自定义appender,称为MyAppender,它应该忽略所有级别低于ERROR的消息(也就是说,它应该只支持ERROR和FATAL)。控制台应该能够支持所有级别。我尝试了几种方法来定义它,但似乎过滤器不适用于根级附加器。如何实现这一点?我当前的log4j2定义:
由此我从NetBeans得到以下错误消息: 所有异常消息都写入控制台,包括用户日志的消息。所以我知道两个伐木工都在工作。记录器附加器写入文件OK。userLog记录器不会创建任何文件,它使用几乎相同的附加器。 看来我还没有正确地命名一些东西来允许log4j2找到记录器。我试过各种命名的组合来弄对它,但我搞不清问题出在哪里。 我必须在每个类的记录器初始化中包含类名吗? 编辑:我需要包含包名。我花了一
我有两张桌子: 我需要从表1中选择记录,其中Value1或Value2不同于表1\u中用相同的键1、键2和键3详细描述的值1和/或值2的总和。此外,我还需要表之间的值差,例如,上面我需要查询返回: 我尝试了很多方法来解决这个问题,但我错过了一些东西,我将非常感谢任何帮助。