백구의 코딩찌개
  • [WPF] Serilog appsettings.json 옵션 값 설명
    2024년 02월 02일 17시 12분 51초에 업로드 된 글입니다.
    작성자: 코딩백구
    반응형

    WPF 프로젝트에서 serilog 를 사용해서 로그 기능을 구현하는 중인데, json을 사용해서 option을 설정하는 방법이 잘 안나와있는것 같아서 정리해보았습니다.

    저는 serilog-settings-configuration 을 사용해서 설정해주었습니다.

    {
      "Log": {
        "Serilog": {
          "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ],
    
          // MinimumLevel : Log Level을 설정
          "MinimumLevel": "Debug",
    
          // WriteTo : Log를 어디에 출력할지 설정
          "WriteTo": [
            // Console Log
            {
              "Name": "Console",
    
              // Args : Console Log에 출력할 형식을 설정
              // outputTemplate : Log에 출력할 형식을 설정
              // {Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} : Log가 출력된 시간 포맷을 설정
              // {Environment} : Log가 출력된 환경을 설정
              // {Application} : Log가 출력된 Application을 설정
              // {MachineName} : Log가 출력된 MachineName을 설정
              // {Level:u3} : Log Level을 설정 (u3 : UpperCase 3자리)
              // {Message:lj} : Log Message를 설정 (lj : Left Justify)
              // {NewLine} : 줄바꿈
              // {Exception} : Exception을 설정
              "Args": {
                "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Environment}] [{Application}] [{MachineName}] [{Level:u3}] {Message:lj}{NewLine}{Exception}"
              }
            },
    
            // File Log
            {
              "Name": "File",
              "Args": {
                // Save File Path
                "path": "Logs/log.txt",
    
                // Minute / Hour / Day / Month / Year / Infinite
                "rollingInterval": "Day",
    
                // File Count / Unlimited - null
                "retainedFileCountLimit": 31,
    
                // File Size
                "fileSizeLimitBytes": 10485760
              }
            }
          ],
          // Enrich : Log에 추가적인 정보를 넣겠다는 의미.
          // WriteTo => Args => outputTemplate 에서 출력할 변수를 추가할 수 있다.
          // FromLogContext : LogContext에 있는 정보를 모든 Log 출력 시, 추가하겠다는 의미.
          // WithMachineName : 현재 MachineName을 LogContext에 추가 (추가 안하면 Properties 에서 설정한 MachineName 으로 출력)
          // WithThreadId : ThreadId를 LogContext에 추가
          "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
    
          // Destructure : Log에 출력되는 객체의 Depth를 설정
          "Destructure": [
            {
              // ToMaximumDepth : 객체의 Depth를 설정
              // Ex) { "a": { "b": { "c": { "d": { "e": "f" } } } } } => { "a": { "b": { "c": { "d": "..." } } } }
              "Name": "ToMaximumDepth",
              "Args": { "maximumDestructuringDepth": 4 }
            },
            {
              // ToMaximumStringLength : 문자열의 길이를 설정
              // 문자열의 길이가 설정한 길이보다 길면 설정한 길이만큼만 출력하고 뒤애 ... 을 붙인다.
              // Ex) "1234567890" => "1234567890..."
              "Name": "ToMaximumStringLength",
              "Args": { "maximumStringLength": 100 }
            },
            {
              // ToMaximumCollectionCount : 컬렉션의 길이를 설정
              // 컬렉션의 길이가 설정한 길이보다 길면 설정한 길이만큼만 출력하고 뒤애 ... 을 붙인다.
              // Ex) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10...]
              "Name": "ToMaximumCollectionCount",
              "Args": { "maximumCollectionCount": 10 }
            }
          ],
    
          // Properties : Log에 추가적인 정보를 넣겠다는 의미.
          "Properties": {
            "Application": "Rl_AMS_UI",
            "Environment": "Development",
            "MachineName": "Local"
          }
        }
      }
    }
    반응형

    'WPF' 카테고리의 다른 글

    [WPF] WPF Serilog 사용해서 Log 세팅하기  (0) 2024.02.01
    댓글