4
런타임시 로거 인스턴스의 클래스 이름을 변경할 수있는 방법이 있는지 궁금합니다. 모든 클래스에서 로거를 생성하지 않고 생성자를 통해 주입하려고합니다. 하지만 그 후에는 이벤트를 호출하는 잘못된 클래스 이름을 파일에 저장합니다. 정보 | | C1 | C1 시험
2011-09 59.7521 : 33 :이NLog. 클래스 이름 변경
public class c1
{
private Logger _logger = LogManager.GetCurrentClassLogger();
public void doSmth()
{
c2 myC2= new c2(_logger);
myC2.LogSomething();
}
public void LogSomething()
{
_logger.Info("c1 test");
}
}
public class c2
{
private Logger _logger;
public c2(Logger logger)
{
this._logger = logger;
}
public void LogSomething() {
_logger.Info("c2 test");
}
}
모든 것이 잘 웍하지만 로그 파일에 우리가
2011-09-07 09을 얻을 같은 프로젝트 구조는 -07 09 : 33 : 59.7611 | 정보 | C1 | C2 시험 대신
${logger}
레이아웃 렌더러의
각 클래스마다 로거를 만들지 않는 특별한 이유가 있습니까? – MichaelMocko
이것은 정상적인 동작입니다. 로거는'c1' 클래스로만 초기화되므로 로거 이름은 항상'c1'이됩니다. 로거 이름을 현재 클래스 이름으로 사용하려면 가장 좋은 방법은'private Logger _logger = LogManager.GetCurrentClassLogger(); '를 사용하여 모든 클래스에 로거를 만드는 것입니다. 왜 네가 원하지 않는지 나는 모르겠다. 왜 당신에게 문제가되는지 설명해 주시겠습니까? – Otiel
로거 인스턴스는 정적 일 수 있습니다. 이렇게하면 CPU 시간과 리소스가 절약됩니다. 개인 정적 로거 _logger = LogManager.GetCurrentClassLogger(); – LostInComputer