2016-04-13 48 views
0

Konsol uygulaması yazıyorum ve Windows olay günlüğüne (Windows 10 dizüstü bilgisayarımda) günlük iletileri göndermek istiyorum. Etkinlik günlüğüne mesaj alamıyorum. Ancak, ben metin dosyalarını ve konsol yazacak log4net almak mümkün. Apache FAQ göreLog4Net'in Console Uygulamasında EventLog'a nasıl yazılır?

using log4net; 

namespace GamePlayTest 
{ 
    public static class Logger 
    { 
     public static readonly ILog log = LogManager.GetLogger(typeof(Logger)); 
    } 
} 

: my günlükçü sınıfı İşte

log4net.Config.XmlConfigurator.Configure(); 
Logger.log.Info("Launching " + options.Input); 
Logger.log.Debug("TestDebugMsg"); 
Logger.log.Fatal("TestFatalMsg"); 

edilir:

İşte
<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/> 
    </configSections> 

    <log4net> 

    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" > 
     <param name="File" value="game-playtest-log-file.txt" /> 
     <param name="AppendToFile" value="true" /> 
     <rollingStyle value="Size" /> 
     <maxSizeRollBackups value="10" /> 
     <maximumFileSize value="10MB" /> 
     <staticLogFileName value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline" /> 
     </layout> 
    </appender> 

    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" > 
     <param name="LogName" value="GamePlayTestLog" /> 
     <param name="ApplicationName" value="GamePlayTest" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> 
     </layout> 
    </appender> 

    <appender name="colored-console" type="log4net.Appender.ColoredConsoleAppender"> 
     <mapping> 
     <level value="INFO" /> 
     <foreColor value="White, HighIntensity" /> 
     <backColor value="Green" /> 
     </mapping> 
     <mapping> 
     <level value="DEBUG" /> 
     <foreColor value="White, HighIntensity" /> 
     <backColor value="Blue" /> 
     </mapping> 
     <mapping> 
     <level value="WARN" /> 
     <foreColor value="Yellow, HighIntensity" /> 
     <backColor value="Purple" /> 
     </mapping> 
     <mapping> 
     <level value="ERROR" /> 
     <foreColor value="Yellow, HighIntensity" /> 
     <backColor value="Red" /> 
     </mapping> 

     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date --- %message%newline%newline"/> 
     </layout> 
    </appender> 

    <root> 
     <appender-ref ref="LogFileAppender"/> 
     <appender-ref ref="EventLogAppender"/> 
     <appender-ref ref="colored-console" /> 
     <priority value="DEBUG" /> 
     <level value="ALL"/> 
    </root> 

    </log4net> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
</configuration> 

Birlikte test ediyorum benim günlük kodu: İşte benim app.config dosyasıdır Bu sorun, genellikle yönetici olarak günlük oluşturma gereksiniminden kaynaklanmaktadır. GamePlayTestLog'u New-EventLog komutuyla bir GamePlayTest kaynağı ile el ile oluşturdum. GamePlayTestLog, olay günlüğünde sıfır olaylarla görünür. Bununla birlikte, mesajlar metin dosyasına ve konsola gitmektedir.

Sorun, kaynak ile ilgili olduğundan şüpheleniyorum çünkü bunu ayarlamak için bir yol bilmiyorum. Kaynağın çalışacağı gibi exe ismini kullanmayı ümit ettim. Bazı ilgili web sayfaları ve S/O makaleleri vardır, ancak hepsi çok modası geçmiş. Kodu here'dan denedim. Ben de GitHub'dan örnekler denedim ama başarılarım yoktu. Bariz bir şeyi kaçırdığımı hissediyorum.

Yönetici olarak başlatılan bir PowerShell oturumundan konsol uygulamasını (GamePlayTest.exe) çalıştırıyorum. Günlük dosyasının satır örneği İşte

log4net: log4net assembly [log4net, Version=1.2.15.0, Culture=neutral, PublicKeyToken=**********]. Loaded from [C:\Users\fores\git\game-playtest-tool\GamePlayTest\bin\x64\Release\log4net.dll]. (.NET Runtime [4.0.30319.42000] on Microsoft Windows NT 6.2.9200.0) 
log4net: defaultRepositoryType [log4net.Repository.Hierarchy.Hierarchy] 
log4net: Creating repository for assembly [GamePlayTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null] 
log4net: Assembly [GamePlayTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null] Loaded From [C:\Users\fores\git\game-playtest-tool\GamePlayTest\bin\x64\Release\GamePlayTest.exe] 
log4net: Assembly [GamePlayTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null] does not have a RepositoryAttribute specified. 
log4net: Assembly [GamePlayTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null] using repository [log4net-default-repository] and repository type [log4net.Repository.Hierarchy.Hierarchy] 
log4net: Creating repository [log4net-default-repository] using type [log4net.Repository.Hierarchy.Hierarchy] 
log4net: configuring repository [log4net-default-repository] using .config file section 
log4net: Application config file is [C:\Users\fores\git\game-playtest-tool\GamePlayTest\bin\x64\Release\GamePlayTest.exe.Config] 
log4net: Configuring Repository [log4net-default-repository] 
log4net: Configuration update mode [Merge]. 
log4net: Loading Appender [LogFileAppender] type: [log4net.Appender.RollingFileAppender] 
log4net: Setting Property [File] to String value [game-playtest-log-file.txt] 
log4net: Setting Property [AppendToFile] to Boolean value [True] 
log4net: Setting Property [RollingStyle] to RollingMode value [Size] 
log4net: Setting Property [MaxSizeRollBackups] to Int32 value [10] 
log4net: Setting Property [MaximumFileSize] to String value [10MB] 
log4net: Setting Property [StaticLogFileName] to Boolean value [True] 
log4net: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [newline] Option [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Setting Property [ConversionPattern] to String value [%date [%thread] %-5level %logger [%property{NDC}] - %message%newline] 
log4net: Converter [date] Option [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [literal] Option [ [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [thread] Option [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [literal] Option [] ] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [level] Option [] Format [min=5,max=2147483647,leftAlign=True] 
log4net: Converter [literal] Option [ ] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [logger] Option [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [literal] Option [ [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [property] Option [NDC] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [literal] Option [] - ] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [newline] Option [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Setting Property [Layout] to object [log4net.Layout.PatternLayout] 
log4net: Searched for existing files in [C:\Users\fores\git\game-playtest-tool\GamePlayTest\bin\x64\Release] 
log4net: curSizeRollBackups starts at [0] 
log4net: Opening file for writing [C:\Users\fores\git\game-playtest-tool\GamePlayTest\bin\x64\Release\game-playtest-log-file.txt] append [True] 
log4net: Created Appender [LogFileAppender] 
log4net: Adding appender named [LogFileAppender] to logger [root]. 
log4net: Loading Appender [EventLogAppender] type: [log4net.Appender.EventLogAppender] 
log4net: Setting Property [LogName] to String value [GamePlayTestLog] 
log4net: Setting Property [ApplicationName] to String value [GamePlayTest] 
log4net: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [newline] Option [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Setting Property [ConversionPattern] to String value [%date [%thread] %-5level %logger [%property{NDC}] - %message%newline] 
log4net: Converter [date] Option [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [literal] Option [ [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [thread] Option [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [literal] Option [] ] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [level] Option [] Format [min=5,max=2147483647,leftAlign=True] 
log4net: Converter [literal] Option [ ] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [logger] Option [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [literal] Option [ [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [property] Option [NDC] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [literal] Option [] - ] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [newline] Option [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Setting Property [Layout] to object [log4net.Layout.PatternLayout] 
log4net: Source [GamePlayTest] is registered to log [] 
log4net: Created Appender [EventLogAppender] 
log4net: Adding appender named [EventLogAppender] to logger [root]. 
log4net: Loading Appender [colored-console] type: [log4net.Appender.ColoredConsoleAppender] 
log4net: Setting Property [Level] to Level value [INFO] 
log4net: Setting Property [ForeColor] to Colors value [White, HighIntensity] 
log4net: Setting Property [BackColor] to Colors value [Green] 
log4net: Setting Collection Property [AddMapping] to object [log4net.Appender.ColoredConsoleAppender+LevelColors] 
log4net: Setting Property [Level] to Level value [DEBUG] 
log4net: Setting Property [ForeColor] to Colors value [White, HighIntensity] 
log4net: Setting Property [BackColor] to Colors value [Blue] 
log4net: Setting Collection Property [AddMapping] to object [log4net.Appender.ColoredConsoleAppender+LevelColors] 
log4net: Setting Property [Level] to Level value [WARN] 
log4net: Setting Property [ForeColor] to Colors value [Yellow, HighIntensity] 
log4net: Setting Property [BackColor] to Colors value [Purple] 
log4net: Setting Collection Property [AddMapping] to object [log4net.Appender.ColoredConsoleAppender+LevelColors] 
log4net: Setting Property [Level] to Level value [ERROR] 
log4net: Setting Property [ForeColor] to Colors value [Yellow, HighIntensity] 
log4net: Setting Property [BackColor] to Colors value [Red] 
log4net: Setting Collection Property [AddMapping] to object [log4net.Appender.ColoredConsoleAppender+LevelColors] 
log4net: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [newline] Option [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Setting Property [ConversionPattern] to String value [%date --- %message%newline%newline] 
log4net: Converter [date] Option [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [literal] Option [ --- ] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [newline] Option [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [newline] Option [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Setting Property [Layout] to object [log4net.Layout.PatternLayout] 
log4net: Created Appender [colored-console] 
log4net: Adding appender named [colored-console] to logger [root]. 
log4net: Logger [root] Level string is [DEBUG]. 
log4net: Logger [root] level set to [name="DEBUG",value=30000]. 
log4net: Logger [root] Level string is [ALL]. 
log4net: Logger [root] level set to [name="ALL",value=-2147483648]. 
log4net: Hierarchy Threshold [] 
log4net: Shutdown called on Hierarchy [log4net-default-repository] 

edilir:

2016-04-13 17:27:52,098 [1] INFO GamePlayTest.Logger - Launching C:\Program Files (x86)\Devotion\DevotionWin.exe 
+1

.exe'de hata ayıklıyor veya çalışıyor musunuz? – raven

+0

Merhaba @RobertoDeLaParra, yönetim modunda PowerShell oturumundan exe çalıştırıyorum. Exe, 64 bit sürüm oluşturmadır. –

+1

, App.config dosyasında ApplicationName GamePlayTest.exe olarak tam adı var mı? – raven

cevap

1

bir özel olay günlüğünü kullanarak, sizin için sırayla olay günlüğü hizmeti yeniden başlatmanız Burada iç log4net günlüğünün içeriği olan düzgün göstermek için.

1

Sadece olay günlüğünün oluşturulması yönetici ayrıcalıklarıyla çalışmalıdır. New-EventLog kullanırken, -LogName parametresinin log4net yapılandırmasında 'LogName' parametresine karşılık geldiğinden ve -Source parametresinin log4net yapılandırmasında `ApplicationName 'parametresine karşılık geldiğinden emin olun.

Günlük girişi oluşturulduğunda, uygulamanın Windows olay günlüğüne giriş yapmak için yönetici ayrıcalıklarına ihtiyacı yoktur. Olay günlüğünü oluşturduktan sonra EventViewer'ı kapatın ve tekrar açın, giriş ağaç görünümünde Applications and Services Logs düğümü altında görünmelidir.