log4net在安装时未创建日志文件

时间:2016-11-29 20:44:38

标签: log4net log4net-configuration

我已经为我的解决方案(包括相关的stackoverflow问题)进行了广泛的搜索,但还没有找到解决我的问题的答案。我一直在工作项目中成功使用log4net,当我在visual studio中运行程序时,我得到了我的日志文件。如果我使用msi安装程序(wix)安装程序,那么我没有得到日志文件。我将首先列出我尝试的内容,然后是我的代码的编辑版本。

此外,在我说“appname”的任何地方,我实际上并未放置appname,只是保留了项目名称。

  1. 我将日志文件放在$ {USERPROFILE} \ AppData \ Local [appname]目录中,权限不是问题。

  2. 由于安装版本中存在的配置文件是appname.exe.config而不是app.config,因此我将Assemblyinfo.cs程序集语句更改为appname.exe.config。然而,这并没有解决我的问题,它仍然只能在通过visual studio运行时运行,安装版本不会。

  3. 我修改了product.wxs,将log4net.dll和log4net.xml传递到安装目录。 (忘记这样做,应用程序无法启动,所以回来并加入)仍然没有变化。

  4. 我们使用log4net在一个解决方案中有5个项目。所有assemblyinfo.cs文件都包含以下内容:

    [assembly: log4net.Config.XmlConfigurator(ConfigFile = "appname.exe.config", Watch = true)]

    我正在使用[assembly: log4net.Config.XmlConfigurator(ConfigFile = "app.config", Watch = true)],但将其更改为安装目录和bin中的修改后的配置文件名。

    在app.config内部(原谅任何可能的拼写错误,我的开发机器被空转,我无法复制粘贴代码):

    <configuration>
        <configSections>
            <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
        </configSections>
        <log4net>
            <root>
                <level value="ALL"/>
                <appender-ref ref="MyAppender"/>
            </root>
            <appender name="MyAppender" type="log4net.Appender.FileAppender">
                <file value="${USERPROFILE}\AppData\Local\appname\appname.log"/>
                <appendToFile value="true"/>
                <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
                <layout type="log4net.Layout.PatternLayout">
                    <conversionPattern value="%date %level - %message%newline"/>
                </layout>
            </appender>
        </log4net>
    </configuration>
    

    在我使用记录器的c#代码中:

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

2 个答案:

答案 0 :(得分:1)

如果您的配置位于app.config中,则可以使用:

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

当您指定文件时,log4net期望log4net元素为xml根元素。对于你的app.config,情况并非如此。

答案 1 :(得分:0)

@erike我不确定这是我的。所以我没有给你链接。