2011-06-02

NLog для самых частых нужд: file, console, coloredConsole, logViewer

Порывшись в документации по NLog и форумах, написал для себя наиболее типичную конфигурацию NLog.

  • В ней содержатся следующие таргеты: консоль, цветная консоль, файл и удаленный просмотрщик логов (например, log2console).
  • Для задания layouts и других параметров используются переменные, так что править теперь нужно только в одном месте.
  • Удалось также вывести exception для удаленного просмотрщика: он задается отдельным параметром и становится виден в окне Details.
  • Удалось выяснить, как разделять поля exception переводом строки: достаточно задать символы как 

  • Для ускорения работы кода: <targets async="true">

<?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"
      throwExceptions="false">

  <!-- Exception layout -->
  <variable name="excLayout" value="${exception:format=Type,Message,StackTrace:separator=&#13;&#10;}"/>

  <!-- Message layout -->
  <variable name="msgLayout" value="${longdate} [${level}] ${logger}: ${message}"/>

  <!-- Full layout (msgLayout + excLayout) -->
  <variable name="fullLayout" value="${msgLayout}  ${excLayout}" />

  <!-- Address for logViewer target -->
  <variable name="viewerAddress" value="tcp4://localhost:4505" />

  <!-- File name pattern -->
  <variable name="fileName" value="${basedir}logs/log.txt" />

  <targets async="true">

    <!-- Simple console target -->
    <target name="console" xsi:type="Console" layout="${fullLayout}" />

    <!-- Colored console target -->
    <target name="coloredConsole" xsi:type="ColoredConsole" layout="${fullLayout}"/>

    <!-- File layout -->
    <target name="file" xsi:type="File" layout="${fullLayout}" fileName="${fileName}" createDirs="true" />

    <!-- LogViewer target (for log2console) -->
    <target name="logViewer" xsi:type="NLogViewer" address="${viewerAddress}">
      <parameter name="exception" layout="${excLayout}"/>
    </target>
  </targets>

  <rules>
    <logger name="*" minlevel="Trace" writeTo="logViewer,file" />
  </rules>
</nlog>

Комментариев нет: