Log4net Log4.net-如何在运行时登录到文件夹集?

Log4net Log4.net-如何在运行时登录到文件夹集?,log4net,log4net-configuration,Log4net,Log4net Configuration,对于此应用程序(CMS),Log4net在Config/Log4net.Config中配置 我需要设置在运行时动态放置日志文件的路径 我已尝试将以下代码添加到global.asax(和OnApplicationStarting) plus将配置更改为 <file type="log4net.Util.PatternString" value="c:\Logs\%property{path}\AppLog.log" /> 在log4net.config中 它首先创建一个目录c:

对于此应用程序(CMS),Log4net在Config/Log4net.Config中配置

我需要设置在运行时动态放置日志文件的路径

我已尝试将以下代码添加到global.asax(和OnApplicationStarting)

plus将配置更改为

<file type="log4net.Util.PatternString"  value="c:\Logs\%property{path}\AppLog.log" />

在log4net.config中

它首先创建一个目录
c:\Logs\(null)\AppLog.log
,然后开始日志记录-过一会儿,它创建所需的目录-
c:\Logs\testlog\AppLog.log
,并继续在该目录中进行日志记录

在日志记录开始之前,我似乎无法连接。有人对我应该怎么做有什么解决方案或想法吗?这样我就不会先得到(null)目录了

我是否可以访问web.config中设置的值,并将其用作文件夹名称中的动态部分?

您需要将其放入:

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

并在获取记录器之前添加属性。 以下是一个工作示例:

我的配置:

<appender name="RollingFileAppender" type="log4net.appender.RollingFileAppender">
            <file type="log4net.Util.PatternString" value="C:\MyLogs\%property{LogFileName}.txt"/>
            <appendToFile value="true"/>
            <rollingStyle value="Size"/>
            <maximumFileSize value="10MB"/>
            <maxSizeRollBackups value="5"/>
            <staticLogFileName value="true"/>
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%date{ABSOLUTE} [%logger] %level - %message%newline%exception"/>
            </layout>
        </appender>

有什么进展吗?
<appender name="RollingFileAppender" type="log4net.appender.RollingFileAppender">
            <file type="log4net.Util.PatternString" value="C:\MyLogs\%property{LogFileName}.txt"/>
            <appendToFile value="true"/>
            <rollingStyle value="Size"/>
            <maximumFileSize value="10MB"/>
            <maxSizeRollBackups value="5"/>
            <staticLogFileName value="true"/>
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%date{ABSOLUTE} [%logger] %level - %message%newline%exception"/>
            </layout>
        </appender>
using System;

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

namespace Log4NetConsoleApplication
{
    class Program
    {

        static void Main(string[] args)
        {
            log4net.GlobalContext.Properties["LogFileName"] = "log";    

            log4net.ILog log = LogHelper.GetLogger();

            Console.WriteLine("hello world");

            log.Error("This is my error message");

            Console.ReadLine();
        }
    }
}