How can I query the path to an NLog log file?

后端 未结 3 2499
余生分开走
余生分开走 2021-02-20 12:36

I\'ve configured a file target for NLog as follows:


  
    

        
相关标签:
3条回答
  • 2021-02-20 12:49
        private string GetLogFile()
        {
            var fileTarget = LogManager.Configuration.AllTargets.FirstOrDefault(t => t is FileTarget) as FileTarget;
            return fileTarget == null ? string.Empty : fileTarget.FileName.Render(new LogEventInfo { Level = LogLevel.Info });
        }
    
    0 讨论(0)
  • 2021-02-20 12:58

    I've just tried to get this information via the configuration api.

    enter image description here

    Sadly it looks like the configuration is evaluated by the actual target and is not resolved in the configuration.

    As {basedir} refers to the appdomain base directory you could simply read this value on your own.

    var basedirPath = AppDomain.CurrentDomain.BaseDirectory;
    
    0 讨论(0)
  • 2021-02-20 13:12

    You could use nLog's api inside of code instead of an xml configuration file. Then, in your application, you assign the log's file path to a variable, and use that variable as the target's filename. You can access that variable, OR change it anytime you like (my snippet, here, is defined inside of a class).

    Private MainNlogConfig As New LoggingConfiguration()
    Dim localrule As New LoggingRule(*, LogLevel.Info, locallogtarget)
    MainNlogConfig..AddTarget("file", locallogtarget)
    
    With locallogtarget
        .Layout = "${longdate} ${logger} ${message}"
        .FileName = appdir & appName & ".log"  '----->LOOK HERE!
    End With
    LogManager.Configuration = MainNlogConfig
    
    0 讨论(0)
提交回复
热议问题