log4net 로깅을 위한 dll 을 호출을 통해 COM
-
05-07-2019 - |
문제
내가 쓴다.NET DLL 는 다른 응용 프로그램에서 사용하시겠습니까?을 사용하고 싶 log4net 지만,필요하의 위치를 지정한 로그 파일에서 런타임에는 다른 응용 프로그램.
난 항상 사용 log4net 가장 간단한 방법으로 대한 WinForms 프로젝트이지만,이후 프로젝트지 않는 응용 프로그램이 있습니다.config,내 호출 또한 응용 프로그램 중 하나가 없습니다(그것도 없습니다.NET),하려고 했 읽는 방법에 대해 조금 log4net 작동 및 설정하려고 그것을 사용하지 않고.config 파일에서 모두.
나는 그것을 가지고 있는 단계에 컴파일하고 종류의 준수하는 내 작은 이해의 log4net 지만,그것을 쓰지 않는 로그 파일입니다.
여기에 나는 지금까지,할 수 있는 사람을 지적한 나의 눈부신 오류/오해,또는 다른 말은 더 나은 방법으로 로그에서 내 dll?
private log4net.Core.ILogger _ilogger;
private ILog _logger;
public void Initialize(String LogFileName)
{
log4net.Repository.ILoggerRepository Repo = null;
try {
Repo = log4net.LogManager.GetRepository(Assembly.GetExecutingAssembly().FullName);
} catch (log4net.Core.LogException) {
//ignore, domain not yet created
}
if (Repo == null) {
Repo = log4net.LogManager.CreateRepository(Assembly.GetExecutingAssembly().FullName);
log4net.Appender.RollingFileAppender appender = new log4net.Appender.RollingFileAppender();
appender.Layout = new log4net.Layout.PatternLayout("%d - %m%n");
appender.File = LogFileName;
appender.MaxSizeRollBackups = 10;
appender.MaximumFileSize = "100MB";
appender.AppendToFile = true;
appender.Threshold = log4net.Core.Level.Debug; //NEW: set level to Debug
appender.ActivateOptions();
Repo.Threshold = log4net.Core.Level.Debug; //NEW: set level to Debug
log4net.Config.BasicConfigurator.Configure(Repo, appender);
}
// This doesn't seem to create the interface I need for logging
_ilogger = Repo.GetLogger(MethodBase.GetCurrentMethod().DeclaringType.FullName);
// This doesn't seem to write to the log file for some reason.
_logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType.FullName);
_logger.Debug("Application started");
}
감사합니다!
해결책
편집 업데이트합니다.다시 읽는 질문입니다.그것은 다음과 같신 전화의 오버로드된 버전이 (에서 전달의 세부 사항을 config 파일)-당신은 기본적으로만 구성하고 싶은 로깅 내에서 COM DLL?
농담으로 나는 구글 log4com 고 이.나는 그것을 사용하지 않지만 그것은 가치가 있을 수도 있습 a 보!
다른 팁
내가 생각하는 대답이 필요 없는 새로운 저장소에서 모두.나는 그냥 만드는 사정이 너무 복잡합니다.이 버전은 사람을 죽는 것을 잘 작동:
public void Initialize(String LogFileName)
{
log4net.Appender.RollingFileAppender appender = new log4net.Appender.RollingFileAppender();
appender.Layout = new log4net.Layout.PatternLayout("%d - %m%n");
appender.File = LogFileName;
appender.MaxSizeRollBackups = 10;
appender.MaximumFileSize = "100MB";
appender.AppendToFile = true;
appender.Threshold = log4net.Core.Level.Debug;
appender.ActivateOptions();
log4net.Config.BasicConfigurator.Configure(appender);
_logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType.FullName);
_logger.Debug("Application started");
}
도 명시적으로 설정 레벨로 디버그에서 모두 기록하고 추가.
제휴하지 않습니다 StackOverflow