質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
.NET Core

.NET Coreは、マネージソフトウェアフレームワークでオープンソースで実装されています。クロスプラットフォームを前提に考えられており、Windows/Mac/Linuxで動くアプリケーションを作成することが可能です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

6761閲覧

NlogでTrace,Debugレベルのログを出力したい。

mi-zoo

総合スコア0

.NET Core

.NET Coreは、マネージソフトウェアフレームワークでオープンソースで実装されています。クロスプラットフォームを前提に考えられており、Windows/Mac/Linuxで動くアプリケーションを作成することが可能です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2021/07/14 11:30

編集2021/07/14 11:32

前提・実現したいこと

C#でNLogを用いてログメッセージの出力をしておりますが、Debug, Traceレベルのメッセージが出力できません。
Info,Warn,Errorレベルのメッセージは出力されています。

なぜTrace,Debug以下のメッセージが出力されないのかがわからず、お知恵をお借りできないでしょうか。

ソースコード

Program.cs

C#

1using Microsoft.Extensions.Configuration; 2using Microsoft.Extensions.Hosting; 3using Microsoft.Extensions.Logging; 4using NLog.Extensions.Logging; 5using Microsoft.Extensions.DependencyInjection; 6using System; 7 8namespace LoggerTest 9{ 10 class Program 11 { 12 static void Main(string[] args) 13 { 14 Console.WriteLine("Begin"); 15 16 var hostbuilder = CreateHostBuilder(args); 17 var host = hostbuilder.Build(); 18 var loggerFactory = host.Services.GetRequiredService<ILoggerFactory>(); 19 var logger = loggerFactory.CreateLogger("TEST"); 20 21 logger.LogTrace("it is Trace"); 22 logger.LogDebug("it is Debug"); 23 logger.LogInformation("it is Info"); 24 logger.LogWarning("it is Warning"); 25 logger.LogError("it is Error"); 26 27 Console.WriteLine("End"); 28 } 29 public static IHostBuilder CreateHostBuilder(string[] args) => 30 Host.CreateDefaultBuilder(args) 31 .ConfigureLogging((hostContext, logging) => 32 { 33 logging.ClearProviders(); 34 logging.AddNLog("NLog.config"); 35 }); 36 } 37}

NLog.config

xml

1<?xml version="1.0" encoding="utf-8" ?> 2<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd" 5 autoReload="true" 6 throwExceptions="false" 7 internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log"> 8 9 <targets> 10 <target name="Console" xsi:type="Console" /> 11 </targets> 12 13 <rules> 14 <!-- コンソールにTraceログ以上すべて出したい --> 15 <logger name="*" minlevel="Trace" writeTo="Console" /> 16 </rules> 17</nlog> 18

実行結果

Begin 2021-07-14 20:25:25.2057|INFO|TEST|it is Info 2021-07-14 20:25:25.2140|WARN|TEST|it is Warning 2021-07-14 20:25:25.2140|ERROR|TEST|it is Error End

実現したいこととしてはINFOの前に、以下のようによりDebug,Traceログも出力されていてほしい

2021-07-14 20:25:25.2057|TRACE|TEST|it is Trace 2021-07-14 20:25:25.2057|DEBUG|TEST|it is Debug

試したこと

<logger name="*" minlevel="Trace" writeTo="Console" /> のminlevelをWarnにしたときはWarn,Errorのみ出力されたので、このファイルが読まれていないということはないと考えています。

補足情報(FW/ツールのバージョンなど)

  • .NET 5.0
  • Microsoft.Extensions.Hosting 5.0.0
  • NLog.Extensions.Logging 1.7.3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しました。
C#側のCreateHostBuilder内にて、SetMinimamLevel関数を用いて最小ログレベルを設定したらいけました。
デフォルトではこの値がInfoになっているようなので、ここで絞られているとNlog.configでTrace以下を指定してもダメ…ということだと理解しました。

C#

1public static IHostBuilder CreateHostBuilder(string[] args) => 2 Host.CreateDefaultBuilder(args) 3 .ConfigureLogging((hostContext, logging) => 4 { 5 logging.ClearProviders(); 6 // appsettings.json から NLog の設定情報を取得する 7 logging.AddNLog("NLog.config"); 8 // ↓以下の行を追加 9 logging.SetMinimumLevel(LogLevel.Trace); 10 11 });

投稿2021/07/14 11:50

mi-zoo

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問