응용 프로그램이 실행되는 동안 fileappender에 대한 로그 파일의 이름을 변경할 수 있습니까? 하루에 몇 차례 일할 것입니다.런타임 중에 로그 파일 이름을 몇 번 변경하십시오.
내 앱이 기기에 펌웨어를 씁니다. 사용자가 이미 작업 한 모든 장치는 그리드에 있습니다. 사용자는 새로운 쓰기 마법사를 시작하거나 이미 시작한 장치에서 작업을 재개하거나 다시 시작할 수 있습니다. 내가하고 싶은 것은 특정 장치에 대해 사용자가 수행 한 모든 단계의 로그를 유지하는 것입니다.
예 : 사용자가 AB0124 디바이스에서 작업 할 때 AB0124.log라는 로그 파일에 기록하고 싶습니다. 해당 장치에서 작업을 끝내고 장치 XY5618에서 작업을 시작하면 해당 작업을 XY5618.log에 기록합니다.
컨텍스트 속성 (here 및 here 및 기타 많은 게시물을 사용할 수 있음)을 읽었습니다. 로거를 만들기 전에 속성을 설정해야합니다. 그래서 클래스에 로거를 만드는 대신 속성을 설정 한 후 메서드에서 만듭니다. 그러나 지금까지 아무것도 기록되지 않습니다.
config에 하드 코드 된 파일 이름을 설정하면 작동합니다. 여기에 분실물이 있습니까?
Log4Net.config :
<appender name="StepsLogAppender" type="log4net.Appender.FileAppender">
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="INFO"/>
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
<file type="log4net.Util.PatternString" value="%property{LogPathModifier}" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{dd/MM/yyyy - HH:mm:ss} - %message%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="StepsLogAppender" />
</root>
C 번호 :
public void WriteStepInfo(string device, int step)
{
log4net.ThreadContext.Properties["LogPathModifier"] = string.Format("D:\\StepsDevice_{0}.txt", device);
var log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
log.Info(string.Format("Device {0} - step {1}.", device, step));
}
그리고 의 AssemblyInfo.cs에서 :
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
예를 들어 주셔서 감사합니다. 정확히 내가 필요로하는 것! – AngieM
이것은 내가 찾은 최고의 구현입니다 ... 감사합니다 ... – Emerson