рдЕрдХреНрд╕рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рдЕрд╕рдВрдЧрдд рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдХреЗ
рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рднреА рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЕрдзрд┐рдХрддрдо рд▓реЙрдЧрд┐рдВрдЧ рдЖрд╡рд╢реНрдпрдХ рд╣реИ
ред рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░реЗрдЧрд╛ рдЬреЛ рдПрд╕реНрдк (.NET рд╕рд░реНрд╡рд░) рдкрд░ рдЕрдкрдиреА рдкрд╣рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ (рд╕рд░реНрд╡рд░ рдкрд░ рддреИрдирд╛рдд) рд▓рд┐рдЦрддреЗ рд╣реИрдВред
рдпрд╣ рдЖрд▓реЗрдЦ Asp.Net рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рддрдХрдиреАрдХ рдХреЗ рдЙрди рдирдП рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд┐рд╕реА рднреА рдЕрдЬреАрдм рддреНрд░реБрдЯрд┐ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ рд╣реИред PostgreSQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯред рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░реЗрд░рдгрд╛ рдпрд╣ рдереА рдХрд┐ рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рд╣рд▓ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЦреЛрдЬрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рдпрд╣рд╛рдБ рддрдХ рдХрд┐ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рднреА, рдЗрд╕ рддрдереНрдп рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЬреЛ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓реЗ рд╣реИрдВ, рд╡реЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдкрд░ рд╕рднреА рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрддреНрддрд░ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред
рдЙрддреНрдкрд╛рдж рд╕рдВрд╕реНрдХрд░рдг: Asp.Net рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ 4.3, .NET рдХреЛрд░ 2.1
рдпрджрд┐ рдЖрдк рдЗрди рдЪрд░рдгреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВ : рдЖрдкрдХреА рдореБрдЦреНрдп рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЕрдиреБрд░реЛрдз рджреЗрдЦреЗрдВрдЧреЗред
рдЪрд░рдг 1
рдЖрдкрдХреЛ рдПрдХ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реБрдЖ рдЖрдВрддрд░рд┐рдХ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рд╣реИред рдпрд╣ рдорд╛рдирдХ рдХреЗ рд░реВрдк рдореЗрдВ Log4Net рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрд╕рдХреЗ рд╕рд╛рде рдХреЛрдИ рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рдПрдХ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕рднреА рд▓реЙрдЧ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВред
рдЪрд░рдг рез.рез
рдкреНрд░реЛрдЬреЗрдХреНрдЯ * .рдИрдВрдЯрд┐рдЯреАрдлреНрд░реЗрдорд╡рд░реНрдХрдХреЛрд░ рдпрд╣рд╛рдВ рд╣рдореЗрдВ 2 рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрдХ рддрд░рдл, рдПрдХ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдЬреЛ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдХрд╛рдо рдХрд░реЗрдЧрд╛ рд╡рд╣ рд╣реИ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рд▓реЙрдЧ рдореЗрдВ рд╕рднреА рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдирд╛ред рдЪрд▓реЛ рдЗрд╕реЗ
MyLogger рдХрд╣рддреЗ рд╣реИрдВ
ред рдФрд░ рдЗрд╕ рд▓рдХрдбрд╝рд╣рд╛рд░реЗ рдХрд╛ рдкреНрд░рджрд╛рддрд╛ рдЬреЛ MyLogger рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдЧрд╛ред рдкреНрд░рджрд╛рддрд╛ рдХреЛ
MyLoggerProvider рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ
редрд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ (рд╕рд░рд▓реАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рд╛рдЗрд▓, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП):
public class MyLoggerProvider : ILoggerProvider { private Castle.Core.Logging.ILogger _logger; public MyLoggerProvider(Castle.Core.Logging.ILogger logger) { _logger = logger; } public ILogger CreateLogger(string categoryName) { return new MyLogger(_logger); } public void Dispose() { } } public class MyLogger : ILogger { private Castle.Core.Logging.ILogger _logger; public MyLogger(Castle.Core.Logging.ILogger logger) { _logger = logger; } public IDisposable BeginScope<TState>(TState state) { return null; } public bool IsEnabled(LogLevel logLevel) { return true; } public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter) { if (IsEnabled(logLevel)) { var msg = formatter(state, exception); _logger.Info("DB-REQUEST: " + msg); } } }
рдпрджрд┐ рдЖрдк рдмрд╛рд░реАрдХреА рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рдХреБрдЫ рдЕрдиреНрдп рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ MyLoggerProvider рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ MyLogger рдХреЛред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддреАрд╕рд░рд╛ рдирд┐рдХрд▓рд╛! рд▓рдмреНрдмреЛрд▓реБрдЖрдм рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рддреАрд╕рд░рд╛ рд▓реЙрдЧрд┐рдВрдЧ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рд╕реНрддрд░ рдХрд╛ рд╡рд░реНрдЧ рд╣реИ, рдЬрд┐рд╕реЗ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЗ рдЖрдВрддреНрд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХреА рдорджрдж рд╕реЗ рд╕рдВрджреЗрд╢ рд▓реЙрдЧ рдореЗрдВ рд╕рд╣реЗрдЬреЗ рдЬрд╛рдПрдВрдЧреЗред рдиреАрдЪреЗ рджреЗрдЦреЗрдВред
рдЪрд░рдг 2
рд╕рдорд╛рди * .EntityFrameworkCore рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░, * DbContextConfigurer.cs рдлрд╝рд╛рдЗрд▓ рдкрд░ рдЬрд╛рдПрдБ рдФрд░ рджреЛрдиреЛрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ () рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ:
2.1) рдПрдХ рд▓реЙрдЧрд░рдлреИрдХреНрдЯреНрд░реА рдкреИрд░рд╛рдореАрдЯрд░ рдЯрд╛рдЗрдк рдХрд░реЗрдВ рд▓реЙрдЧрд░рдлреИрдХреНрдЯреНрд░реА
2.2) рдореЗрдердб рдмреЙрдбреА рдореЗрдВ рджреЛ рд▓рд╛рдЗрдиреЗрдВ рдЬреЛрдбрд╝реЗрдВ:
builder.UseLoggerFactory(loggerFactory); builder.EnableSensitiveDataLogging(true);
UseLoggerFactory рдХрд╛ рдЕрд░реНрде
рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд▓реЙрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рд▓реЙрдЧрд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддреЗ рд╣реИрдВред
EnableSensitiveDataLogging рдХрд╛ рдЕрд░реНрде рди рдХреЗрд╡рд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓реЙрдЧрд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрди рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛, рдЖрдк рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдирд╣реАрдВ рджреЗрдЦ рдкрд╛рдПрдВрдЧреЗ - рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╢реНрди рдЪрд┐рд╣реНрди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЪрд░рдг 3
рдЙрд╕реА * .EntityFrameworkCore рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░, рд╣рдо * DbContextFactory.cs рдлрд╝рд╛рдЗрд▓ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВред
3.1) рдПрдХ рдирдИ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ:
private LoggerFactory GetDbLoggerFactory() { return new LoggerFactory(new[] { new MyLoggerProvider(NullLogger.Instance) }); }
3.2) CreateDbContext () рд╡рд┐рдзрд┐ рдореЗрдВ:
рдХреНрдпреЛрдВрдХрд┐ рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рджреЛрдиреЛрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ () рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рд╛ рдерд╛, рдпрд╣рд╛рдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдирдП рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ - рд╣рдо GetDbLoggerFactory () рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╛рдиреА рдирдП рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдорд╛рди рдЦрдВрдб 3.1 рд╕реЗ рдирдИ рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЪрд░рдг 4
рдЙрд╕реА * .EntityFrameworkCore рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░, рд╣рдо * EntityFrameworkModule.cs рдлрд╝рд╛рдЗрд▓ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВред
4.1) рдПрдХ рдирдИ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ:
private LoggerFactory GetDbLoggerFactory() { return new LoggerFactory(new[] { new MyLoggerProvider(Logger) }); }
рек.реи) PreInitialize () рд╡рд┐рдзрд┐ рдореЗрдВ:
рдХреНрдпреЛрдВрдХрд┐ рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рджреЛрдиреЛрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ () рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рд╛ рдерд╛, рдпрд╣рд╛рдВ рдПрдХ рддреНрд░реБрдЯрд┐ рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рд╣рдо рдзрд╛рд░рд╛ 3.2 рдХреЗ рд╕рдорд╛рди рдПрдХ рдирдпрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ - рд╣рдо рдПрдХ рдХреЙрдорд╛ рдХреЗ рд╕рд╛рде GetDbLoggerFactory () рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВред рдпрд╛рдиреА рдирдП рд▓реЙрдЧрд░рдлреИрдХреНрдЯрд░реА рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдорд╛рди рдЦрдВрдб 4.1 рд╕реЗ рдирдИ рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдкрд░рд┐рдгрд╛рдо
рдореБрдЦреНрдп рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ Logs.txt рджреНрд╡рд╛рд░рд╛) рдЖрдкрдХреЛ DB-REQUEST рдЪрд░рд┐рддреНрд░ рдЕрдиреБрдХреНрд░рдо рджреНрд╡рд╛рд░рд╛ рдкреВрд░реНрд╡рд╡рд░реНрддреА рд╕рднреА рдкреНрд░рд╢реНрди рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ (рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рдЖрдк рд▓реЙрдЧ рдбреЗрдЯрд╛ рдЦреЛрдЬ рд╕рдХрддреЗ рд╣реИрдВ)ред
рд╕рдорд╛рдзрд╛рди рдХреА рд╕рд╛рдорд╛рдиреНрдп рд╕рдордЭ
рдЗрд╕рд▓рд┐рдП, рдЕрдм рдореИрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛ рдХрд┐ рд╣рдордиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рд╣реИред рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдХреНрд╕рд░ рдкрд╛рдардХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред
рдХрдХреНрд╖рд╛ рдореЗрдВ * DbContextFactory, рд╕рд╛рде рд╣реА * EntityFrameworkModule, рд╣рдо рдЕрдкрдиреЗ LoggerFactory рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рд╣рдо рдирд┐рд░реНрдорд┐рдд MyLoggerProvider рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдПрдХ рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рд╡рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛ рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реАрдзреЗ рд▓реЙрдЧ рдХрд░реЗрдЧрд╛ (* DbContextFactory), рд╣рдо NullLogger.Instance рд╕реНрдЯрдм рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдХреЛрдИ рдПрдВрдЯреНрд░реА рди рд╣реЛред рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ (* EntityFrameworkModule) рд╣рдо рд▓рдХрдбрд╝рд╣рд╛рд░реЗ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдмреАрдкреА-рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╣реИред рдпрд╣ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдХреНрд╖реЗрддреНрд░ рд╣реИред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрд░рдВрднрд┐рдХ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рд▓реЙрдЧ рдЗрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рд╣рдорд╛рд░рд╛ MyLogger рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Logs.txt рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред
рдкреВрд░рд╛ рддрд░реНрдХ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд▓реЙрдЧрд░рдлреИрдХреНрдЯреНрд░реА рдлреИрдХреНрдЯреНрд░реА рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЙрдЧ рдлреИрдХреНрдЯрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╣реИред рдЬреИрд╕реЗ рд╣реА рдПрдХ рд▓рдХрдбрд╝рд╣рд╛рд░реЗ рдХреА рдЬрд░реВрд░рдд рд╣реЛрддреА рд╣реИ, рд╡рд╣ рдХрд╛рд░рдЦрд╛рдиреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдпрд╣ рд╣рдорд╛рд░рд╛ MyLogger рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ, Logs.txt (рдпрд╛ рдЬрд┐рд╕ рд╕реНрд░реЛрдд рд╕реЗ рдЖрдкрдХреЗ рдореБрдЦреНрдп рд▓реЙрдЧ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реА рд╕рднреА рдЪреАрдЬрд╝реЛрдВ рдХреЛ рд▓реЙрдЧ рдХрд░рддрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЕрдореВрд░реНрддрддрд╛ рдХреЗ рд╕реНрддрд░ рдХрднреА-рдХрднреА рд╕реНрдерд┐рд░ рд╣реЛрддреЗ рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП! рдЕрдкрдиреЗ рд╕рд╡рд╛рд▓ рдХрдореЗрдВрдЯ рдореЗрдВ рдкреВрдЫреЗред
рдиреЛрдЯ:- рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╕рдордЭреЗрдВ рдХрд┐ рддреНрд░реБрдЯрд┐ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдмрдВрдж рдХрд░реЗрдВред рдпрд╣ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред