繁体   English   中英

记录文件的文件夹名称

[英]Folder name of where file is getting logged

以下是log4net的设置方法

<log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value="..\AppLogs\%property{LogName}.txt" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="5" />
      <maximumFileSize value="5MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d{yyyy/MM/dd HH:mm:ss} [%thread] %-5level %logger - %message%newline" />
      </layout>
    ............  
</log4net>    

我知道我可以使用下面的内容获取日志文件的文件名。

var fileAppender = log4net.LogManager.GetRepository().GetAppenders().First(appender => appender is RollingFileAppender);

但是,我想获取将创建日志文件的文件夹名称。 无论如何得到这个?

var fileAppender = _logger.Logger.Repository.GetAppenders().OfType<RollingFileAppender>().FirstOrDefault();

假设您正在声明这样的_logger实例

private static readonly ILog _logger = LogManager.GetLogger(typeof(YourClass));

File属性包含日志文件的完整路径。 完成后,使用Path.GetDirectoryName获取文件夹。

该MSTest单元测试表明:

[TestInitialize]
public void Setup()
{
    log4net.GlobalContext.Properties["LogName"] = "testlogger";

    var fileInfo = new FileInfo("log4net.config.xml");

    if (fileInfo.Exists == false)
    {
        throw new InvalidOperationException("Can't locate the log4net config file");
    }

    LogManager.ResetConfiguration();
    log4net.Config.XmlConfigurator.Configure(fileInfo);
}

[TestMethod]
[DeploymentItem(@"log4net.config.xml")]
public void log4net_RollingFileAppender_Is_Configured_Correctly()
{
   var appender = log4net.LogManager.GetRepository()
                                    .GetAppenders()
                                    .OfType<RollingFileAppender>()
                                    .First();

    Console.WriteLine(appender.File);
    Console.WriteLine(Path.GetDirectoryName(appender.File));
}

并在配置中:

  <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString" value="..\AppLogs\%property{LogName}.txt" />

测试结果:

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM