2017-11-20 12 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

을 놓치고있어 생각합니다.

당신은

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

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

PS (이것은 다른 클래스에있을 수 있습니다) Log()를 호출 한 후,이 경우, 로거에 기록해야합니다 당신의 방법의 이름은 약간 혼란, 나는 그것이해야한다고 생각 "로그"대신 "SetupLogging"