(ASP.NET,C#)NLogを使う

前回はLog4Netだけどどうやら今後NLogが主流になるようだ。
(↑ソースは忘れました)

NuGetでパッケージのインストール

  • NLog

  • NLog.Web.AspNetCore

nlog.config

プロジェクトROOTに nlog.config を配置する。
(↑NuGetパッケージのインストールを行ったら作成されたのかな?)

<?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"
      autoReload="true"
      internalLogLevel="Info"
      internalLogFile="internal-nlog.txt">
    <extensions>
        <add assembly="NLog.Web.AspNetCore" />
    </extensions>
    <targets async="true">
        <target xsi:type="File" name="debuglog"
                fileName="${aspnet-appbasepath}/logs/debug-${shortdate}.log"
                layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message}|url: ${aspnet-request-url:IncludeQueryString=true}" />
        <target xsi:type="File" name="infolog"
                fileName="${aspnet-appbasepath}/logs/info-${shortdate}.log"
                layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url:IncludeQueryString=true}" />
        <target xsi:type="File" name="errorlog"
                fileName="${aspnet-appbasepath}/logs/error-${shortdate}.log"
                layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|user: ${aspnet-user-identity} |url: ${aspnet-request-url:IncludeQueryString=true}|action: ${aspnet-request-form}" />
    </targets>
    <rules>
        <logger name="*" maxlevel="Debug" writeTo="debuglog" />
        <logger name="Microsoft.*" maxLevel="Info" final="true" />
        <logger name="*" levels="Error,Fatal,Warn" writeTo="errorlog" />
        <logger name="*" minlevel="Info" writeTo="infolog" />
    </rules>
</nlog>

ログ出力

private static NLog.Logger _logger = NLog.LogManager.GetCurrentClassLogger();
_logger.info("ロガーです!");