gpt4 book ai didi

Log4Net不会从类库记录日志

转载 作者:行者123 更新时间:2023-12-04 04:50:03 24 4
gpt4 key购买 nike

我正在Windows 7中使用C#在.NET Framework 4.0上进行工作,并尝试从类库登录,但无法正常工作。我正在运行我的应用程序而没有错误,但是我的日志文件和控制台都没有任何 react 。

所以,这是我的代码:

这是我的App.config文件:

<?xml version="1.0"?>
<configuration>

<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>


<add key="log4net.config" value="config.log4net"/>

<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{ABSOLUTE} [%thread] %level %logger - %message%newlineExtra Info: %property{testProperty}%newline%exception"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="DEBUG"/>
<levelMax value="FATAL"/>
</filter>
</appender>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="MyLogFile.txt"/>
<appendToFile value="true"/>
<rollingStyle value="Size"/>
<maxSizeRollBackups value="5"/>
<maximumFileSize value="10MB"/>
<staticLogFileName value="true"/>
<filter type="log4net.Filter.StringMatchFilter">
<stringToMatch value="debug"/>
</filter>
<filter type="log4net.Filter.StringMatchFilter">
<stringToMatch value="error"/>
</filter>
<filter type="log4net.Filter.DenyAllFilter"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline%exception"/>
</layout>
</appender>
<root>
<level value="DEBUG"/>
<appender-ref ref="ConsoleAppender"/>
<appender-ref ref="RollingFileAppender"/>
</root>
<logger name="MyApplication">
<level value="DEBUG"/>
<appender-ref ref="ConsoleAppender"/>
<appender-ref ref="RollingFileAppender"/>
</logger>
</log4net>

<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>

</configuration>

这是我放入 AssemblyInfo.cs的内容:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]

这是我要记录的文件的内容:
private static readonly ILog log = LogManager.GetLogger(
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);


log.Debug("Testing");

当我运行程序时,什么也没有发生。有人知道为什么吗?

最佳答案

this answer相似,app.config,log4net配置和AssemblyInfo.cs配置器都需要放置在主机应用程序中。

可以说我有一个项目Console作为要运行的控制台项目,还有Library作为一个Library项目。 Console将需要具有带有上述log4net配置的app.config文件,而AssemblyInfo.cs将需要在其中包含XmlConfigurator代码。 Library不需要任何一个,并且可以通过使用LogManager调用来工作。

Console                 > This is the project that you will run.
Properties
AssemblyInfo.cs > Place [assembly: log4net.Config.XmlConfigurator(Watch = true)] here.
app.config > Place log4net XML configuration here.
Program.cs > Start of application.

Library
Properties
AssemblyInfo.cs > Leave this file alone.
Foo.cs > Create the private readonly property.
SomeMethod() > log.Debug("Test");

关于Log4Net不会从类库记录日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19960200/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com