2017-11-20 22 views
0
using System; 
using System.IO; 
using NLog; 
using NLog.Config; 
using NLog.Targets; 
using Newtonsoft.Json.Linq; 

namespace LoggingExample 
{ 
    class Logging 
    { 

     static void Logging() 
     { 

       var config = new LoggingConfiguration(); 

       var consoleTarget = new ColoredConsoleTarget(); 
       config.AddTarget("console", consoleTarget); 
       var fileTarget = new FileTarget(); 
       config.AddTarget("file", fileTarget); 

       consoleTarget.Layout = "${message}"; 

       fileTarget.FileName = "C:/log.txt"; 
       fileTarget.Layout = "${message}"; 


       consoleTarget.UseDefaultRowHighlightingRules = true; 

       string json = File.ReadAllText("config.json"); 
       JObject jo = JObject.Parse(json); 
       string debugLevel = (string) jo.SelectToken("Logging_Properties.LogLevel"); 

       LogLevel level = TestDebugLevel(debugLevel) ? LogLevel.FromString(debugLevel) : LogLevel.Info; 

       LoggingRule rule1 = new LoggingRule("Console", LogLevel.Debug, consoleTarget); 
       LoggingRule rule2 = new LoggingRule("File", level, fileTarget); 

       config.LoggingRules.Add(rule1); 
       config.LoggingRules.Add(rule2); 

       LogManager.Configuration = config; 



     } 

     static bool TestDebugLevel(string level) 
     { 
      switch (level.ToLower()) 
      { 
       case "info": 
        return true; 
       case "debug": 
        return true; 
       case "warn": 
        return true; 
       case "error": 
        return true; 
       case "fatal": 
        return true; 
       default: 
        return false; 

      } 
     } 
    } 

私のアプリケーションにはプログラムで設定されたロガーが含まれている必要がありますが、唯一の問題は使用方法がわかりません。私はすべてが正しく書かれていると思いますが、アプリケーション内で実際にロガーを呼び出す方法はわかりません。私はLogmanager.GetLogger()をコンソールまたはファイルロガーのいずれかを使用したいロガーと一緒に使用する必要があることを知っていますが、何もしようとしないとログに記録されます。カスタムロギング設定を使用するにはどうすればよいですか?

+0

https://github.com/NLog/NLog/wiki/Tutorial –

+1

申し訳ありませんが、申し訳ありませんが、人々は答えに時間がかかりましたので、あなたの投稿を破壊することはできません。 –

答えて

1

が欠けていると思います。

あなたはこのような場合には、PS

var appConsoleLogger = LogManager.GetLogger("ConsoleLogger"); 
appConsoleLogger.Info("info log to console"); 

var appFileLogger = LogManager.GetLogger("FileLogger"); 
appFileLogger.Info("info log to file"); 

(これは別のクラスにすることができる)Log()を呼び出した後、ロガーにログインする必要があります:あなたのメソッドの名前は少し混乱して、私はそれが必要だと思います"ログ"の代わりに "セットアップログ"

関連する問題