안녕하세요. ef 쿼리가 의도에 맞는지 로그를 남기게 해두었습니다.
문제는 이걸 운영에서는 안 남게 하고 싶은데요.
질문은 아래쪽에 있습니다.
환경에 따라 아래처럼 config 를 분리 해두었습니다. (이렇게 하는 것이 맞는지 모르겠네요.)
public void Configure(IApplicationBuilder app, IWebHostEnvironment env,
ILoggerFactory logger)
{
if (env.IsDevelopment())
{
logger.AddLog4Net("log4net.Development.config");
}
else if (env.IsProduction())
{
logger.AddLog4Net("log4net.Production.config");
}
else
{
logger.AddLog4Net("log4net.config");
}
}
질문: 아래와 같이 할경우, 기본 log4net.config (왜 여기에 남을까요?) 에 있는 경로에 아래와 같이 ef 쿼리로그가 남습니다.
2022-03-12 15:48:58,621 [7] INFO Microsoft.EntityFrameworkCore.Database.Command
생각대로라면 appsetting.Production 에 값을 넣어 두고, 그 값이 있으면, UseLoggerFactory 를 패스 시키면 될거 같은데요. 먼가 다른 깔끔한 방법이 없을까요?
public void ConfigureServices(IServiceCollection services)
{
string mySqlConnectionStr = Configuration["DB:dbConn"];
ServerVersion serverVersion = new MySqlServerVersion(ServerVersion.AutoDetect(mySqlConnectionStr));
// appsetting.Production 에 값을 세팅해서 Production 일때는 쿼리 로그 패스 하게 하는게 맞는건가?
// mysql 로그가 log4net.config 에 세팅된 경로로 쌓임
services.AddDbContext<DabomeContext>(options => options.UseMySql(mySqlConnectionStr, serverVersion).UseLoggerFactory(LoggerFactory.Create(p => p.AddLog4Net())).EnableSensitiveDataLogging()
.EnableDetailedErrors());
}