在编写windows服务程序时,使用log4net不会将任何内容写入日志
本文关键字:任何内 日志 使用 windows 服务程序 log4net | 更新日期: 2024-09-25 22:53:53
我正在windows服务程序中配置commom.logging。目前,它可以生成日志文件,但其中没有内容
我正在使用common.logging和log4net。
这是我的常用日志文件脚本:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
</configSections>
<common>
<logging>
<factoryAdapter type="Common.Logging.Simple.ConsoleOutLoggerFactoryAdapter, Common.Logging">
<arg key="level" value="info" />
<arg key="showLogName" value="true" />
<arg key="showDataTime" value="true" />
<arg key="dateTimeFormat" value="yyyy/MM/dd HH:mm:ss:fff" />
</factoryAdapter>
</logging>
</common>
</configuration>
这是我的log4net conf脚本:
<log4net xsi:noNamespaceSchemaLocation="http://csharptest.net/downloads/schema/log4net.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<root>
<level value="ALL"/>
<appender-ref ref="rollingFile"/>
</root>
<logger name="ApplicationInfoLog">
<level value="ALL"/>
<appender-ref ref="rollingFile"/>
</logger>
<appender name="rollingFile" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Logs/a.txt"/>
<param name="AppendToFile" value="true"/>
<param name="RollingStyle" value="Date"/>
<param name="DatePattern" value="yyyy.MM.dd".txt""/>
<param name="StaticLogFileName" value="true"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] <%X{auth}> - %m%n"/>
</layout>
</appender>
</log4net>
这是将内容写入日志的代码:
namespace jsptpd
{
public partial class jsptpdJobScheduler : ServiceBase
{
private readonly ILog logger;
private IScheduler scheduler;
public jsptpdJobScheduler()
{
InitializeComponent();
logger = LogManager.GetCurrentClassLogger();
logger.Info("dfsfsd");
logger.Debug("dsfsgg");
}
}
}
哪里有问题,我找不到,请帮我谢谢。
Log4Net以静默方式失败,前提是没有日志记录总比关闭应用程序好。如果您的log4net配置在控制台应用程序中按预期工作,而在服务(守护进程)中不工作,那么最有可能的问题是某种权限问题。
看看我对这个问题的回答,Log4net没有';有关如何打开log4net内部调试的详细信息,请参阅文件。以下也是Phil Haack的观点:http://haacked.com/archive/2006/09/26/Log4Net_Troubleshooting.aspx/
您可能不使用common.log,您可以使用log4net进行配置,如下所示:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
你可以删除一个记录器,只需使用这样的根:
<log4net xsi:noNamespaceSchemaLocation="http://csharptest.net/downloads/schema/log4net.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<root>
<level value="ALL"/>
<appender-ref ref="rollingFile"/>
</root>
<appender name="rollingFile" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Logs/a.txt"/>
<param name="AppendToFile" value="true"/>
<param name="RollingStyle" value="Date"/>
<param name="DatePattern" value="yyyy.MM.dd".txt""/>
<param name="StaticLogFileName" value="true"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] <%X{auth}> - %m%n"/>
</layout>
</appender>
</log4net>
它只是使用log4net并且工作良好。