動態指定log4net日誌文件名稱 動態修改log4net組件的日誌文件名 log4Net 動態改變寫入文件

如果是希望日誌文件按常見的日期格式動態命名,沒什麼好說的,直接修改app.config

<param name="DatePattern" value="yyyyMMdd&quot;.log&quot;" />

但我遇到的一個場景,是同一個exe要運行多個實例,如何分別寫入不同的日誌文件呢?

參考過 動態修改log4net組件的日誌文件名

運行的結果是新的 log文件確實產生了,但是日誌記錄並不能寫入進去,加之年代久遠,也就沒有跟原作者討論的激情了

後來發現 log4Net 動態改變寫入文件 , 問題完美解決。

    ''' <summary>
    ''' 動態指定日誌文件名稱
    ''' </summary>
    ''' <param name="logger">日誌對象實例,log4net.ILog</param>
    ''' <param name="fileName">日誌輸出的文件名</param>
    ''' <remarks>一般在靜態或初始化時調用</remarks>
    Public Shared Sub ChangeLogFileName(ByVal logger As ILog, ByVal fileName As String)
        Dim apdArray() As Appender.IAppender = logger.Logger.Repository.GetAppenders
        For Each apd As Appender.IAppender In apdArray
            If apd.GetType Is GetType(Appender.RollingFileAppender) Then
                logger.InfoFormat("Change Log File to {0}", fileName) ' 字符串會寫入到 app.config 中指定的原始日誌文件
                Dim rfa As Appender.RollingFileAppender = CType(apd, Appender.RollingFileAppender)
                rfa.File = fileName
                rfa.ActivateOptions()
                Exit For
            End If
        Next
    End Sub

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章