【问题标题】:NLog user-specific logfileNLog 用户特定的日志文件
【发布时间】:2013-07-10 03:16:07
【问题描述】:

如何使用 NLog 创建一个用户特定的日志文件,文件名与用户名相同?我知道您可以在布局中使用变量,但文件名属性设置在目标级别。我希望能够在调用类ClassLogger.Debug("user did something", thisUser.Username) 中执行类似filename="C:\pathtologfiles\${myApp:user}.txt" 的操作。

【问题讨论】:

    标签: nlog


    【解决方案1】:

    这就是我最终的做法(不幸的是,在 VB 中。)您当然需要实现自己的 _UsernameIsMeaningfulInThisContext_GetUsername

    在 nlog 配置中

    <variable name="AppLogDir" value="C:\inetpub\ApplicationLogging\MyApplication" />
    ...
    <targets>
      ...
      <target name="UserSpecificLogfile"
              xsi:type="File"
              fileName="${AppLogDir}\Users\AppUser_${event-context:item=AppUsername}.txt"
              createDirs="true" />
    </targets>
    <rules>
      ...
      <logger name="*" minLevel="Trace" maxLevel="Fatal" writeTo="UserSpecificLogfile" />
    </rules>
    

    在调用类中

    Private Property _ClassLogger As Logger = LogManager.GetCurrentClassLogger()
    ...
    Private Sub _LogMaybeUser(ByVal nLogLevel As NLog.LogLevel, ByVal nMsg As String)
    {
         Dim logfileUser As String = "Unknown"
         If _UsernameIsMeaningfulInThisContext() { logfileUser = _GetUsername() }
         Dim logInfo As New LogEventInfo(nLogLevel, "", nMsg)
         logInfo.Properties("AppUsername") = logfileUser
         ClassLogger.Log(logInfo)
    }
    

    【讨论】:

      猜你喜欢
      • 2015-09-28
      • 2021-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多