您的位置:首页 > 其它

如何在 Windows 服务中正确使用 log4net

2005-08-18 16:21 603 查看
前几天写了一个 Windows 服务程序,其中使用 log4net 却总是失败。
不论 log4net 的配置写在 app.config 里,还是独立的 config 文件里,都是一样。
今天终于发现原来是在服务里不能正确定位到这个配置文件所致。
于是经过尝试之后,发现关键在于如下代码中获取当前 exe 所在目录并用于得到 config 文件的路径。按这个写法就可以正确输出日志了:


public class Service1 : ServiceBase






{    


    // 进程的主入口点


    private static void Main()




    

{


        string assemblyFilePath = Assembly.GetExecutingAssembly().Location;


        string assemblyDirPath = Path.GetDirectoryName(assemblyFilePath);


        string configFilePath = assemblyDirPath + "//log4net.config";


        DOMConfigurator.ConfigureAndWatch(new FileInfo(configFilePath));


        ServiceBase[] ServicesToRun;




        ServicesToRun = new ServiceBase[] 

{new Service1()};


        ServiceBase.Run(ServicesToRun);


    }


    // 其他略


}
其他的不多写了,附带我的 log4net.config:


<?xml version="1.0" encoding="utf-8" ?>


<log4net>


    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">


        <file value="Logs/log.txt" />


        <appendToFile value="true" />


        <rollingStyle value="Size" />


        <maxSizeRollBackups value="10" />


        <maximumFileSize value="100KB" />


        <staticLogFileName value="true" />


        <layout type="log4net.Layout.PatternLayout">


            <conversionPattern value="%d [%t] %-5p %c [%x] -%m%n" />


        </layout>


    </appender>




    <root>


        <level value="ALL" />


        <appender-ref ref="RollingLogFileAppender" />


    </root>


</log4net>    

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  windows log4net encoding exe c