1 min read

NLog konfigürasyon dosyası

Bu yazıda NLog ayarlarını yapmak için bir .config dosyası hazırlıyoruz.
NLog konfigürasyon dosyası

NLog ayarlarını yapmak için bir .config dosyası hazırlayabiliyoruz.

Bu konfigürasyonda "target" yani hedef olarak belirttiğimiz yerlere log yazılacaktır. Hedef tiplerine örnek olarak veritabanı, metin dosyası, konsol verilebilir. Dosya yazılacaksa dosya adı, veritabanına yazılacaksa kullanıcı girişi bilgileri vb. burada belirtilmesi gerekir.

Konfigürasyonda "logger" ile belirtilenler ise hangi bilginin hangi hedefe yazılacağını gösteren kurallardır.

<target name="database" xsi:type="Database" dbProvider="MySqlConnector.MySqlConnection, MySqlConnector">
  <connectionString>
    Server=localhost;Port=3306;Database=mydb;Uid=news;Pwd=**********;
  </connectionString>
  <commandText>
    insert into mydb.Log (
    Application, Logged, Level, Message,
    Logger, CallSite, Exception
    ) values (
    @Application, @Logged, @Level, @Message,
    @Logger, @Callsite, @Exception
    );
  </commandText>
  <parameter name="@application" layout="AspNetCoreNlog" />
  <parameter name="@logged" layout="${date}" />
  <parameter name="@level" layout="${level}" />
  <parameter name="@message" layout="${message}" />
  <parameter name="@logger" layout="${logger}" />
  <parameter name="@callSite" layout="${callsite:filename=true}" />
  <parameter name="@exception" layout="${exception:tostring}" />
</target>

<target name="logconsole" xsi:type="Console" />

<!-- write logs to file  -->
<target xsi:type="File" name="allfile" fileName="nlog-all-${shortdate}.log"
        layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}" />

<!-- another file log, only own logs. Uses some ASP.NET core renderers -->
<target xsi:type="File" name="ownFile-web" fileName="nlog-own-${shortdate}.log"
        layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" />
<logger name="*" minlevel="Info" writeTo="logconsole" />

<!--All logs, including from Microsoft-->
<logger name="*" minlevel="Trace" writeTo="allfile" />

<!--Skip non-critical Microsoft logs and so log only own logs-->
<logger name="Microsoft.*" maxlevel="Info" final="true" />

<!-- BlackHole without writeTo -->
<logger name="*" minlevel="Trace" writeTo="ownFile-web" />