2017-06-20 90 views
0

我已經爲我的應用程序實現了記錄器,並且我想在.NET Core Console Application上以XML格式(XmlLayout)記錄活動。 Log4Net配置包括FileAppender和XmlFileAppender,如下所示。Log4Net Layout.XmlLayout不會在.NET核心平臺中創建日誌

<log4net> 
    <appender name="FileAppender" type="log4net.Appender.FileAppender"> 
    <file value="C:\Log4NetLogs\UaGatewayText.log.txt"/> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="[%date{dd.MM.yyyy}] [%date{ABSOLUTE}] [%thread] 
    %level %property{TEST - Ua.Gateway} %message%newline" /> 

    </layout> 
     </appender> 
      <appender name="ConsolAppender" 
          type="log4net.Appender.ConsoleAppender"> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="[%dae{DATE}] [%date{ABSOLUTE}] [%thread] 
        [%level] %message%newline" /> 
     </layout> 
    </appender> 


    <appender name="XmlFileAppender" 
       type="log4net.Appender.RollingFileAppender"> 
      <file type="log4net.Util.PatternString" 
       value="C:\Log4NetLogs\UaGatewayXml.log.xml" /> 
     <appendToFile value= "true" /> 
     <rollingStyle value="size"/> 
     <maximumFileSize value ="50MB"/> 
     <maxSizeRollBackups value ="10"/> 
     <layout type="log4net.Layout.XmlLayout" /> 
    </appender> 


    <root> 
    <level value="ALL" /> 
    <appender-ref ref="FileAppender" /> 
    <appender-ref ref="XmlFileAppender" /> 

    </root> 

</log4net> 

在.NET核心控制檯應用程序,XmlAppender在目錄中創建UaGatewayXml.log.xml文件,不寫任何日誌。但是,它對FileAppender非常有用。

對於XmlFileAppender和FileAppender,上述配置對.NET Framework(4.5。*)均按預期工作。

我必須在配置文件中進行任何更改嗎? 由於

+0

你有[看了一下log4net的調試輸出(http://haacked.com/archive/2006/09/27/Log4Net_Troubleshooting.aspx /)? – stuartd

+0

我以前見過。 .NET Core項目不包含App.config文件,所以我不能這樣做。 – JayeshThamke

+0

這只是一種啓用調試的方法 - 您也可以在log4net配置中使用',或者您可以在代碼中使用'log4net.Util.LogLog.InternalDebugging = true;' – stuartd

回答

0

負載的配置手動:

var logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly()); 
XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config")); 
+0

hi @jαsοη 我已經知道並實施。 – JayeshThamke

+0

var collection = XmlConfigurator.Configure(_LoggerRepository,new FileInfo(_Log4netConfigPath)); – JayeshThamke

+0

你實施了,它的工作? –

0

我有同樣的問題與一個ASP.Net核2.0 web應用程序。

我啓用了內部調試,看到以下內容:

log4net的:ERROR [RollingFileAppender進行]錯誤代碼:GenericFailure。在DoAppend中失敗 System.ArgumentException:'log4j:event'中的名稱字符無效。 ':'字符(十六進制值0x3A)不能包含在名稱中。 在System.Xml.XmlWellFormedWriter.CheckNCName(字符串的NCName) 在System.Xml.XmlWellFormedWriter.WriteStartElement(字符串前綴,字符串的localName,串NS) 在log4net.Layout.XmlLayoutSchemaLog4j.FormatXml(XmlWriter的作家,LoggingEvent所LoggingEvent所) 在log4net.Layout.XmlLayoutBase.Format(TextWriter的作家,LoggingEvent所LoggingEvent所) 在log4net.Appender.FileAppender.Append(LoggingEvent所LoggingEvent所) 在log4net.Appender.AppenderSkeleton.DoAppend(LoggingEvent所LoggingEvent所)

我取代

<layout type="log4net.Layout.XmlLayoutSchemaLog4j"> 

<layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date{yyyyMMddHHmmss.fff} [%thread] %-5level %logger %appdomain - %class - %exception - %method - %property{GlobalLog4NetProperty} - %property{ThreadProperty} - %property{log4net:HostName} - %message%newline"/> 
</layout>