不使用log4net创建日志文件

时间:2014-06-09 06:23:43

标签: log4net app-config log4net-configuration

我已经下载了log4net.dll并将其添加为服务参考。 我创建的项目之一有app.config,我在其中进行了以下配置

<?xml version="1.0"?>
<configuration>
<configSections>
    <section name="log4net"type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
</configSections>
<log4net>       
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender" >
        <param name="File" value="C:\\Users\\<myid>\\Desktop\\error.log"/>
        <appendToFile value="true" />
        <rollingStyle value="Size" />
        <maxSizeRollBackups value="10" />
        <maximumFileSize value="10MB" />
        <staticLogFileName value="true" />
    </appender>
    <root>
        <level value="ALL" />
        <appender-ref ref="RollingFileAppender" />
    </root>
</log4net>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<system.serviceModel>
    <bindings />
    <client />
</system.serviceModel>
</configuration>

我有一个Entry表单并创建并声明了

private static readonly log4net.ILog logger = log4net.LogManager.GetLogger
  (System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

这是在部分类内部以及我在这里使用的日志记录

 private void Entry_Load(object sender, EventArgs e)
    {
        log4net.Config.XmlConfigurator.Configure();
        logger.Debug("logged");            
    }

我添加了

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "app.config", Watch = true)]
在Assemblyinfo.cs类

并在main.cs类中添加了它

static void Main(string[] args)
{
            log4net.Config.XmlConfigurator.Configure();
            logger.Debug("app started");
    }

日志文件本身未创建,我调试时正确运行这些代码。 我使用.net 4.0 c#的桌面应用程序使用log4net.dll版本1.2.13。 我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:2)

您已经以不同的方式初始化了log4net 3,首先选择如何初始化和配置log4net。使用System.Configuration API配置应用程序的唯一方法是调用log4net.Config.XmlConfigurator.Configure()。所以你必须删除程序集:log4net属性。如果要使用log4net配置文件,最好通过assembly.cs中的属性执行此操作。最后一种方法使您可以在应用程序运行时更改配置。

Please read the manual on configuring log4net

答案 1 :(得分:1)

@peer是对的,您需要选择一种配置log4net的方法并正确使用它。

我认为您的直接问题是您已在汇编属性中指定app.config作为配置文件,但您必须指定your_app_name.exe.config,因为这将是文件的名称在构建项目之后(名称将根据应用程序的实际名称而有所不同,请查看构建输出目录以查看它的名称)

或者,作为&#34; If neither of the ConfigFile or ConfigFileExtension properties are specified, the application configuration file (e.g. TestApp.exe.config) will be used as the log4net configuration file.&#34;只需省略ConfigFile属性:

[assembly: log4net.Config.XmlConfigurator(Watch=true)]

(文档声明 可以观看app.config文件,只要您将FileInfo传递给ConfigureAndWatch或使用汇编属性。)

如果您还有其他问题,请将log4net设置为调试模式,并在配置中使用声明<log4net debug=true>,并在运行时检查跟踪输出是否存在任何报告的配置问题。