appsettings.json: Կարգավորման ֆայլ

Բովանդակություն

Ներածություն

appsettings.json-ը նախատեսված է 8X կոնֆիգուրացիոն սերվիսի աշխատանքի կարգավորման պարամետրերը սահմանելու համար, ինչպիսիք են տվյալների բազայի Sql Connection-ը, լոգավորման կարգավորումները:

Տե՛ս նաև

Autentication

Azure AD-ով կամ Windows ADFS-ով նույնականացման կարգավորումներ։
Մանրամասների համար տե՛ս

Այս կարգավորումները հարկավոր է լինեն նույնը 8X սերվիսի և կոնֆիգուրացիոն սերվիսի համար։

"Autentication": {
    "Alternative": "AD",
    "AD": {
        "Authority": "https://login.microsoftonline.com/yourdomain.am",
        "ClientId": "158u5wn2-2n95-14nm-22b2-9694efe14vae",
        "RedirectUri": "https://yourdomain.am/b2bAdminTool",
        "TokenMapping": "oid",
        "ResourceID": "https://yourdomain.am/Cloud"
    },
    "ADFS": {
        "Authority": "https://federationservername.yourdomain.am/adfs",
        "ClientId": "v04c6fd-4220-14e6-n315-f147ac852c18",
        "RedirectUri": "https://localhost:44322",
        "TokenMapping": "sid"
    }
}

Պարամետրեր

Անվանում Տվյալների տիպ Պարտադիր/Ոչ պարտադիր Լռությամբ արժեք Նկարագրություն
Alternative string Ոչ պարտադիր AD Սահմանում է օգտագործողի նույնականացման եղանակը՝ AD կամ ADFS։
AD object Պարտադիր   Կարգավորում է Azure Active Directory-ով նույնականացման կարգավորումները։
  Authority string Պարտադիր - Oգտագործողի նույնականացման համար անհրաժեշտ URL-ը։
  ClientId string Պարտադիր - Ծրագրի Client ID-ն, որը գրանցված է Azure AD-ում։
  RedirectUri string Պարտադիր - Նույնականացումից հետո վերահղման համար URL-ը։
  TokenMapping string Պարտադիր - Նույնականացման համար անհրաժեշտ տոկենի տեսակը՝ OID։
  ResourceID string Պարտադիր - Ծրագրի կողմից մուտքագրվող ռեսուրսի URL-ը։
ADFS object Պարտադիր - Կարգավորում է Active Directory Federation Services (ADFS)-ով նույնականացման կարգավորումները։
  Authority string Պարտադիր - Oգտագործողի նույնականացման համար անհրաժեշտ URL-ը։
  ClientId string Պարտադիր - Ծրագրի Client ID-ն, որը գրանցված է ADFS-ում։
  RedirectUri string Պարտադիր - Նույնականացումից հետո վերահղման համար URL-ը։
  TokenMapping string Պարտադիր - Նույնականացման համար անհրաժեշտ տոկենի տեսակը՝ SID։

AdditionalSettings

Այս բաժինը նախատեսված է սերվիսի հավելյալ կարգավորումները տալու համար։

"AdditionalSettings": {
  "CheckServerName": true
}
Անվանում Տվյալների տիպ Պարտադիր/Ոչ պարտադիր Լռությամբ արժեք Նկարագրություն
CheckServerName bool Ոչ պարտադիր true true արժեքի դեպքում համեմատվում են սերվիսի կոնֆիգուրացիայում նշված սերվեր/տվյալների բազայի և միացված կոնֆիգուրացիայի սերվեր/տվյալների բազայի անունները, անհամապատասխանության դեպքում թարմացումը ընդհատվում է։ Կիրառվում է AutoUpdate գործիքում։

masterdb

Այս բաժինը նախատեսված է տվյալների բազայի կարգավորումները տալու համար։

"masterdb": {
    "server": "TEST-SERVER",
    "database": "test_db",
    "login": "test-user",
    "password": "test-password",
    "readOnly" : "1",
    "maxPoolSize" : 100,
    "customerId": "100000",
    "encrypt": false
}

Պարամետրեր

Անվանում Տվյալների տիպ Պարտադիր/Ոչ պարտադիր Լռությամբ արժեք Նկարագրություն
server string Պարտադիր - Սերվերի անուն:
database string Պարտադիր - Սերվերում գտնվող տվյալների բազայի անուն:
login string Պարտադիր - Տվյալների բազայի սերվերին մուտք գործելու համար օգտագործվող մուտքանունը:
password string Պարտադիր - Տվյալների բազայի սերվերին մուտք գործելու համար օգտագործվող գաղտնաբառը:
readOnly string Ոչ պարտադիր “0” Նշում է, թե արդյոք տվյալների բազային միացումը միայն կարդալու իրավասությամբ է, թե ոչ:
maxPoolSize int Ոչ պարտադիր 100 Տվյալների բազային միացումների Pool-ում միացումների առավելագույն քանակը:
customerId string Ոչ պարտադիր   Պատվիրատուի նույնակացման համար: Օգտագործվում է ՀԾ-Ձեռնարկության և ՀԾ-Աշխատավարձի 8X սերվիսների կողմից:
encrypt bool Ոչ պարտադիր false Նշում է, թե արդյոք տվյալների բազային միացումը ծածկագրվի, թե ոչ:

Hangfire

Hangfire-ը գրադարան է, որը նախատեսված է background job-երի հերթի դրման և կատարման մեխանիզմը ապահովելու համար։

"IsHangfireServer": false

"Hangfire": {
    "server": "TEST-SERVER",
    "database": "test_db",
    "login": "test-user",
    "password": "test-password",
    "workerCount": 10,
    "expirationInDays": 1
}

Պարամետրեր

Անվանում Տվյալների տիպ Պարտադիր/Ոչ պարտադիր Լռությամբ արժեք Նկարագրություն
IsHangfireServer bool Ոչ պարտադիր false Hangfire Server-ի միացման հայտանիշ։
server string Պարտադիր - Սերվերի անունը, որտեղ գտնվում է Hangfire-ի տվյալների բազան։
database string Պարտադիր - Տվյալների բազայի անունը, որը օգտագործում է Hangfire-ը։
login string Պարտադիր - Տվյալների բազայի սերվերին մուտք գործելու համար օգտագործվող մուտքանունը։
password string Պարտադիր - Տվյալների բազայի սերվերին մուտք գործելու համար օգտագործվող գաղտնաբառը։
workerCount int Ոչ պարտադիր Environment.ProcessorCount * 5 Ֆոնային աշխատող պրոցեսների քանակը, որոնք Hangfire-ը պետք է օգտագործի առաջադրանքները մշակելու համար։
expirationInDays int Ոչ պարտադիր 1 Նշում է օրերի քանակը, որից հետո մշակված առաջադրանքները կհամարվեն ժամկետանց և կջնջվեն տվյալների բազայից։

JwtConfig

8X սերվիսում ծրագրային նույնականացվելուց սերվիսը տրամադրվում է JWT Token, որը օգտագործվում է API կանչերի ժամանակ նույնականությունը ստուգելու համար: Այս բաժնում սահմանված են JWT Token-ի կարգավորումները։

"JwtConfig": {
    "secret": "7V{)Grmn0/12cx^TY<gnl.568",
    "issuer": "test_db",
    "expirationInMinutes": 1440,
    "refreshExpirationInMinutes": 43200
}

Պարամետրեր

Անվանում Տվյալների տիպ Պարտադիր/Ոչ պարտադիր Լռությամբ արժեք Նկարագրություն
secret string Պարտադիր - JWT Token-ի վավերականացման ու ստորագրման համար նախատեսված բանալի։ Առավելագույն երկարությունը 32 է (երկարության գերազանցման դեպքում հաշվի են առնվում միայն առաջին 32 սիմվոլները):
issuer string Պարտադիր - Token-ը թողարկող տվյալների բազայի անունը:
expirationInMinutes int Պարտադիր - JWT Token-ի վավերականության տևողությունը րոպեներով:
refreshExpirationInMinutes int Ոչ պարտադիր 43200 Թարմացման Token-ի վավերականության տևողությունը րոպեներով: Լռությամբ արժեքը 43200 րոպե է (1 ամիս):

Serilog

8X սերվիսում լոգերի հավաքագրման համար օգտագործվում է Serilog գրադարանը։ appsettings.json-ում կարգավորումների ձևը որոշվում է Serilog գրադարանի կողմից։

Լոգավորումը հնարավոր է կարգավորել այնպես, որ լոգը գրանցվի Console-ում, ֆայլում կամ Seq սերվերում։ Հնարավոր է կարգավորել, որ միաժամանակ մի քանի աղբյուրում կատարվի լոգի գրանցում` այդ թվում կիրառելով որոշակի ֆիլտր։

Տե՛ս նաև

MinimumLevel-ի կարգավորում

Այստեղ կարգավորվում է լոգի պահպանման մակարդակը (Information, Warning, Error, Debug, Trace)։

Օրինակ՝

"Serilog": {
    "MinimumLevel": {
        "Default": "Information",
        "Override": {
            "Microsoft": "Warning",
            "System": "Warning",
            "Microsoft.AspNetCore": "Warning",
            "Serilog.AspNetCore": "Warning"
        }
    }
}

Պարամետրեր

Անվանում Տվյալների տիպ Պարտադիր/Ոչ պարտադիր Լռությամբ արժեք Նկարագրություն
MinimumLevel:Default string Ոչ պարտադիր “Information” Կարգավորում է լոգի պահպանման մակարդակը (Information, Warning, Error, Debug, Trace) ընդհանուր դեպքում։
MinimumLevel:Override object Ոչ պարտադիր   Կարգավորում է լոգի պահպանման մակարդակը առանձին աղբյուրների համար։

Լոգի գրանցում ֆայլում

Ֆայլում գրանցումը ապահովելու համար անհրաժեշտ է Serilog բաժնի WriteTo ենթաբաժնում ավելացնել դրան հատուկ պարամետրերը։

"Serilog": {
    "WriteTo": [
        {
            "Name": "File",
            "Args": {
                "path": "./logs/log.json",
                "rollingInterval": "Day",
                "formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact"
            }
        }
    ]
}

Պարամետրեր

Անվանում Տվյալների տիպ Պարտադիր/Ոչ պարտադիր Լռությամբ արժեք Նկարագրություն
Name string Պարտադիր - Գրելով File նշում են, որ լոգավորումը կատարվում է ֆայլում։
Args object Ոչ պարտադիր   Գրանցման ֆայլի կարգավորումները։
  path string Պարտադիր - Ֆայլի հարաբերական ճանապարհը appsettings.json ֆայլի նկատմամբ։
  rollingInterval string Ոչ պարտադիր Day Լոգերի գրանցման համար անհրաժեշտ նոր ֆայլի ստեղծման հաճախականությունը։ Այս օրինակում նշված է Day, որ նշանակում է, որ ամեն օրվա լոգերի համար ստեղծվում է նոր ֆայլ։
  formatter string Ոչ պարտադիր TXT Լոգերի գրանցման ֆորմատը (JSON, XAML, …): Լռությամբ ֆորմատը TXT է։ Օրինակում նշված արժեքը առավել հարմար է լոգերի հետ հետագա աշխատանքի համար։

Լոգի գրանցում Seq սերվերում

Seq սերվերում գրանցումը ապահովելու համար անհրաժեշտ է Serilog բաժնի WriteTo ենթաբաժնում ավելացնել դրան հատուկ պարամետրերը։

"Serilog": {
    "WriteTo": [
        {
            "Name": "Seq",
            "Args": {
                "serverUrl": "http://95.140.203.18:8443",
                "bufferBaseFilename": "./logs/buffer"
            }
        }
    ]
}

Պարամետրեր

Անվանում Տվյալների տիպ Պարտադիր/Ոչ պարտադիր Լռությամբ արժեք Նկարագրություն
Name string Պարտադիր - Գրելով Seq նշում են, որ լոգավորումը կատարվում է Seq սերվերում։
Args object Ոչ պարտադիր   Գրանցման Seq-ի կարգավորումները։
  serverUrl string Պարտադիր - Seq-ի սերվերի հասցեն։
  bufferBaseFilename string Ոչ պարտադիր   Սերվերի անհասանելի լինելու դեպքում լոգերի գրանցման համար անհրաժեշտ ֆայլի հարաբերական ճանապարհը appsettings.json ֆայլի նկատմամբ։ Սերվերը հասանելի դառնալուն պես ֆայլում գրանցված լոգերը գրանցվում են Seq-ում։

Լոգի ֆիլտրում

Լոգը կարելի գրանցել կիրառելով որոշ ֆիլտրեր։ Ստորև օրինակում ֆիլտրվում է ըստ լոգի ConnectedService դաշտի ‘ArCaP2P’ արժեքի և լոգավորումը պահպանում է ArCaP2P_XXXXXXXX.json անունով ֆայլում (XXXXXXXX-ի փոխարեն գրված ամսաթիվ):

"Serilog": {
  "WriteTo": [
    {
      "Name": "Logger",
      "Args": {
        "configureLogger": {
          "Filter": [
            {
              "Name": "ByIncludingOnly",
              "Args": {
                "expression": "@p['ConnectedService'] = 'ArCaP2P'"
              }
            }
          ],
          "WriteTo": [
            {
              "Name": "File",
              "Args": {
                "path": "./logs/ArCaP2P_.json",
                "formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact",
                "rollingInterval": "Day",
                "rollOnFileSizeLimit": true,
                "fileSizeLimitBytes": "1000000"
              }
            }
          ]
        }
      }
    }
  ]
}

| Անվանում | Տվյալների տիպ | Պարտադիր/Ոչ պարտադիր | Լռությամբ արժեք | Նկարագրություն | | — | — | — | — | — | | Name | string | Պարտադիր | - | Նշում է որ բարդ լոգ է։ | | Filter | array | Ոչ պարտադիր | | Կարգավորում է ֆիլտրը։ Տե՛ս նաև Serilog Expressions։ |

Մի քանի լոգերի կիրառում

Ստորև օրինակում կարգավորված են վերևի երեք լոգերը միաժամանակ։

"Serilog": {
  "MinimumLevel": {
    "Default": "Information",
    "Override": {
      "Microsoft": "Warning",
      "System": "Warning",
      "Microsoft.AspNetCore": "Warning",
      "Serilog.AspNetCore": "Warning"
    }
  },
  "WriteTo": [
    {
      "Name": "File",
      "Args": {
        "path": "./logs/log.json",
        "rollingInterval": "Day",
        "formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact"
      }
    },
    {
      "Name": "Seq",
      "Args": {
        "serverUrl": "http://95.140.203.18:8443",
        "bufferBaseFilename": "./logs/buffer"
      }
    },
    {
      "Name": "Logger",
      "Args": {
        "configureLogger": {
          "Filter": [
            {
              "Name": "ByIncludingOnly",
              "Args": {
                "expression": "@p['ConnectedService'] = 'ArCaP2P'"
              }
            }
          ],
          "WriteTo": [
            {
              "Name": "File",
              "Args": {
                "path": "./logs/ArCaP2P_.json",
                "formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact",
                "rollingInterval": "Day",
                "rollOnFileSizeLimit": true,
                "fileSizeLimitBytes": "1000000"
              }
            }
          ]
        }
      }
    }
  ]
}