NLog не входит (служба Windows)

vb.net visual-studio-2013 nlog

434 просмотра

1 ответ

143 Репутация автора

У меня есть служба Windows, которую я преобразовываю из своей собственной регистрации в NLog. Я использовал NLog в предыдущем приложении-службе Windows и чувствовал, что знаю, что делаю. Но это не логирование :(

У меня есть следующая конфигурация NLog:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
      autoReload="true"
      throwExceptions="false"
      internalLogLevel="On" internalLogFile="c:\temp\nlog-internal.log" >

  <variable name="DebugInfoLayout" value="[${date:format=MM/dd/yyyy h\:mm\:ss tt}] [${gdc:item=location}]  |  ${level}  |  ${message}" />
  <variable name="InfoLayout" value="[${date:format=MM/dd/yyyy h\:mm\:ss tt}] ${gdc:item=SoftwareName} Version ${gdc:item=SoftwareVersion}  -  ${message}" />
  <variable name="LogLayout" value="[${date:format=MM/dd/yyyy h\:mm\:ss tt}] ${message}" />
  <variable name="logDir" value="${basedir}/LogFiles" />
  <variable name="ArchiveDir" value="${basedir}/LogFiles/Archive" />

  <targets async="true">
    <target name="Errors" xsi:type="File" fileName="${logDir}/errors.log" layout="${LogLayout}" keepFileOpen="false" archiveFileName="${ArchiveDir}/errors_${shortdate}.{##}.log" archiveNumbering="Sequence" archiveEvery="Day" maxArchiveFiles="30" archiveOldFileOnStartup="true" />
    <target name="Info" xsi:type="File" fileName="${logDir}/info.log" layout="${InfoLayout}"  keepFileOpen="false" archiveFileName="${ArchiveDir}/info_${shortdate}.{##}.log" archiveNumbering="Sequence" archiveEvery="Day" maxArchiveFiles="30"/>
    <target name="Debug" xsi:type="File" fileName="${logDir}/debug.log" layout="${DebugInfoLayout}"  keepFileOpen="false" archiveFileName="${ArchiveDir}/debug_${shortdate}.{##}.log" archiveNumbering="Sequence" archiveEvery="Day" maxArchiveFiles="30" />  
  </targets>

  <rules>
    <logger name="Errors" minlevel="Trace" maxlevel="Fatal" writeTo="Errors" />
    <logger name="Info" minlevel="Trace" maxlevel="Warn" writeTo="Info" />
    <logger name="Debug" minlevel="Trace" maxlevel="Fatal" writeTo="Debug" />
  </rules>
</nlog>    

Для меня это выглядит правильно. И это так же, как в моем другом приложении. С точки зрения кода, у меня есть это в моем файле service.vb:

'NLog Instances
Dim errorLogger As NLog.Logger = NLog.LogManager.GetLogger("Errors")
Dim infoLogger As NLog.Logger = NLog.LogManager.GetLogger("Info")
Dim debugLogger As NLog.Logger = NLog.LogManager.GetLogger("Debug")

Затем опустите в подпрограммах:

    Try
    Catch ex As Exception
        WritetoNLog(errorlogger, NLog.LogLevel.Error, System.Reflection.MethodInfo.GetCurrentMethod.Name, ex.Message)
        WritetoNLog(errorlogger, NLog.LogLevel.Error, System.Reflection.MethodInfo.GetCurrentMethod.Name, ex.InnerException.ToString)
    End Try

А затем для этой простой процедуры:

Public Sub WritetoNLog(ByRef logger As NLog.Logger, ByVal nlogtype As NLog.LogLevel, ByVal location As String, message As String)
    NLog.GlobalDiagnosticsContext.Set("location", String.Format("{0,-35}", location))

    Select Case nlogtype
        Case NLog.LogLevel.Trace
            logger.Trace(message)
        Case NLog.LogLevel.Fatal
            logger.Fatal(message)
        Case NLog.LogLevel.Info
            logger.Info(message)
        Case NLog.LogLevel.Debug
            logger.Debug(message)
        Case NLog.LogLevel.Error
            logger.Error(message)
        Case NLog.LogLevel.Warn
            logger.Warn(message)
    End Select

    NLog.LogManager.Flush()

End Sub
Автор: Andrew Источник Размещён: 18.07.2016 09:13

Ответы (1)


0 плюса

143 Репутация автора

Решение

Эта ошибка internalLogLevel="On"должна была быть internalLogLevel="Trace"(или похожей).

Автор: Andrew Размещён: 19.07.2016 11:23
Вопросы из категории :
32x32