Log4net이 로그 파일에 로그를 기록하지 않음
Log4net을 사용하여 간단한 시나리오를 만들었지만, 로그 파일에 메시지가 추가되지 않아 로그 appenders가 작동하지 않는 것 같습니다.
다음을 web.config 파일에 추가했습니다.
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false"/>
</configSections>
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<file value="D:\MyData\Desktop\LogFile.txt" />
<appendToFile value="true" />
<encoding value="utf-8" />
<layout type="log4net.Layout.SimpleLayout" />
</appender>
<root>
<level value="INFO" />
<appender-ref ref="LogFileAppender" />
</root>
</log4net>
글로벌 ASAX 파일에 다음을 추가했습니다.
ILog logger = LogManager.GetLogger(typeof(MvcApplication));
Application_Start 메서드 내에서 다음을 수행합니다.
logger.Info("Starting the application...");
테스트 로그 "응용 프로그램 시작 중...로그 파일에 추가되지 않습니까?
전화하시겠습니까?
log4net.Config.XmlConfigurator.Configure();
log4net이 당신의 구성을 읽게 할 수 있는 곳?예: Global.asax:
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
// Initialize log4net.
log4net.Config.XmlConfigurator.Configure();
}
다음 FAQ 페이지 사용:Apache log4net 질문과 대답
아래의 약 3/4은 애플리케이션 추적을 사용하여 log4net 디버깅을 활성화하는 방법을 알려줍니다.문제의 위치를 알 수 있습니다.
기본 사항은 다음과 같습니다.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
</configuration>
그리고 당신은 표준 출력에서 추적을 볼 수 있습니다.
@Andreasson이 제안했듯이, 우리는 그것을 구성할 필요가 있습니다.에서 구성 작업을 수행하고 있습니다.AssemblyInfo
파일. 나는 지정합니다.configuration file name
여기서.
// Log4Net Configuration.
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
또한 [log4net]에 대해 "항상 복사" 옵션이 선택되어 있는지 확인합니다.설정
사이트가 실행 중인 프로세스(계정)에 출력 디렉터리에 쓸 수 있는 권한이 있는지 확인합니다.
IIS 7 이상에서는 애플리케이션 풀에 구성되어 있으며 일반적으로 AppPool ID이며, 일반적으로 모든 디렉토리에 쓸 수 있는 권한이 없습니다.
이벤트 로그(애플리케이션 및 보안)를 확인하여 예외가 발생했는지 확인합니다.
삽입:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
AssemblyInfo.cs 파일의 끝에
저 같은 경우에는.IIS_IUSRS
로그 파일에 대한 읽기\쓰기 권한입니다.
저는 로그 파일의 위치를 이동했고 파일 이름을 다른 이름으로 변경했을 때만 다시 시작되었습니다.
같은 이름의 로그 파일이 이미 있으면 아무 일도 일어나지 않는 것 같습니다.
그런 다음 이전 파일의 이름을 바꾸고 구성의 로그 파일 이름을 원래대로 다시 변경합니다.
제 경우 프로젝트 이름에 공백이 있어 log4net이 제대로 로깅되지 않았습니다.왜 같은 코드가 다른 프로젝트에서는 잘 작동했지만 새 프로젝트에서는 작동하지 않았는지 미치겠어요.공백.단순한 공간.
따라서 프로젝트 이름의 공백을 주의해야 합니다.전 교훈을 얻었습니다.
다음 라인 코드가 AssemblyInfo.cs 파일에 있어야 합니다.
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Web.config", Watch = true)]
또한 Application_start() 메서드에서 이 줄을 확인합니다.
log4net.Config.XmlConfigurator.Configure();
저는 Logger를 Nuget Package로 옮겨야 했습니다.NuGet 패키지 프로젝트에 아래 코드를 추가해야 합니다.
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config")]
자세한 내용은 https://gurunadhduvvuru.wordpress.com/2020/04/30/log4net-issues-when-moved-it-to-a-nuget-package/ 을 참조하십시오.
구성 파일이 올바른 것 같습니다.그런 다음 Log4net 구성 파일을 응용 프로그램에 등록해야 합니다.따라서 아래 코드를 사용할 수 있습니다.
var logRepo = LogManager.GetRepository(Assembly.GetEntryAssembly());
XmlConfigurator.Configure(logRepo, new FileInfo("log4net.config"));
프로세스를 등록한 후 아래 정의를 호출하여 로거를 호출할 수 있습니다.
private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
log.Error("Sample log");
log4net을 사용하는 몇 가지 방법이 있습니다.해결책을 찾다가 유용하다는 것을 알게 되었습니다.솔루션에 대한 설명은 다음과 같습니다. https://www.hemelix.com/log4net/
언급URL : https://stackoverflow.com/questions/3618380/log4net-does-not-write-the-log-in-the-log-file
'programing' 카테고리의 다른 글
Eclipse에서 .* 파일을 표시하려면 어떻게 해야 합니까? (0) | 2023.04.29 |
---|---|
VBA Excel에서 캘린더 입력을 만들려면 어떻게 해야 합니까? (0) | 2023.04.29 |
콘솔 경고가 표시되는 이유: iOS 13.2에서 WKebView를 로드할 때 [Process] kill()이 예기치 않은 오류 1을 반환했습니다. (0) | 2023.04.29 |
이클립스 / 안드로이드 : "프로젝트에서 빌더 '안드로이드 프리 컴파일러'를 실행하는 중 오류가 발생했습니다.." (0) | 2023.04.29 |
시스템 삭제 방법.MongoDB에서 프로필 수집? (0) | 2023.04.29 |