Vim*_*987 11 .net c# log4net log4net-configuration
我想将日志功能实现到类库中,类库本身在web服务中引用.我尝试添加app.config并完成所需的一切,但似乎抛出异常时,log4net什么都不做.
我的app.config
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="D:\\mylogfile.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<filter type="log4net.Filter.StringMatchFilter">
<stringToMatch value="test" />
</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="INFO"/>
<appender-ref ref="RollingFileAppender"/>
<appender-ref ref="ConsoleAppender" />
</root>
</log4net>
Run Code Online (Sandbox Code Playgroud)
在AssemblyInfo.cs中:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "app.config")]
Run Code Online (Sandbox Code Playgroud)
在LogManager.cs中:
private static readonly ILog Log = log4net.LogManager.GetLogger
(MethodBase.GetCurrentMethod().DeclaringType);
public static void WriteLog(Exception ex)
{
Log.Error(ex);
}
Run Code Online (Sandbox Code Playgroud)
你能告诉我什么是错的吗?如何让log4net为我的类库工作?
谢谢
在运行时,除非明确声明,否则始终从主机应用程序使用配置文件.在这种情况下,web.config正在使用而不是app.cofig.而是提及一些其他自定义配置文件名,并确保将文件复制到Web服务的虚拟目录中.同样如chibacity所说,确保对日志文件的权限.最好将它保存在web服务主机的app_data文件夹中.
您可以使用某种注入,或者构建一个简单的注入,例如:
public interface ILogger
{
void LogInfo(string message);
.
.
.
}
Run Code Online (Sandbox Code Playgroud)
然后你只需注入与该接口匹配的东西,比如 log4net 的包装器等。
但是,我认为最正确的做法是不登录类库。我之所以这么认为是因为库本身不是应用程序,您的 Web 服务才是应用程序,因此您的 Web 服务应该决定记录哪些内容。如果您想记录异常,请不要在类库中捕获它们并让您的 Web 服务处理日志记录。这也将使集中日志记录变得更容易。
请看我对以下问题的回答:
它有一个日志配置例程,将构建 log4net 配置文件的完整路径。当您在网络服务中时,我不会在您期望的位置查找“app.config”。
另请确保您有权从网络服务写入“D:\mylogfile.txt”。
| 归档时间: |
|
| 查看次数: |
26071 次 |
| 最近记录: |