在编写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&quot;.txt&quot;"/>
            <param name="StaticLogFileName" value="true"/>
            <layout type="log4net.Layout.PatternLayout">            
                <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] &lt;%X{auth}&gt; - %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");            
        }
    }
}

哪里有问题,我找不到,请帮我谢谢。

在编写windows服务程序时,使用log4net不会将任何内容写入日志

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&quot;.txt&quot;"/>
            <param name="StaticLogFileName" value="true"/>
            <layout type="log4net.Layout.PatternLayout">            
                <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] &lt;%X{auth}&gt; - %m%n"/>
            </layout>
        </appender>
    </log4net>

它只是使用log4net并且工作良好。