私はWindowsサービスでlog4netを作成することに非常に不満を持っています。 私はGoogleで検索しようとしましたが、私の問題を解決する解決策はありません。ここで Log4netはWindowsサービスでは動作しません
は私のApp.configファイルです: メイン機能でのProgram.csで<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler, log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<appSettings>
<add key="ApplicationSettings" value="Configurations/ApplicationSettings.json" />
<add key="ClientSettingsProvider.ServiceUri" value="" />
</appSettings>
<!-- log4net rolling file configuration -->
<log4net debug="true">
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="log.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="100KB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
<system.web>
<membership defaultProvider="ClientAuthenticationMembershipProvider">
<providers>
<add name="ClientAuthenticationMembershipProvider"
type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
</providers>
</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
<providers>
<add name="ClientRoleProvider"
type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
</providers>
</roleManager>
</system.web>
</configuration>
、私が呼び出してみました:
System.IO.Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
XmlConfigurator.Configure();
Main.cs(私のサービス)のOnStartメソッド機能では、I試みました:
_log = LogManager.GetLogger(typeof(Main));
_log.Error("Service started");
しかし、何も起こりませんが、ログを書き込むとログファイルが表示されません。
誰でも教えてください。
私は一日中解決策を探していましたが、何も見つかりませんでした。
を使用すると、上記の設定の問題を持っているように見え、
サービスをどのアカウントで実行していますか?アカウントに**ログオンするフォルダへ**書き込み**アクセス権がありますか? – MickyD
ProjectInstallerをLocalSystemに設定しました。 – Redplane
ファイルを見つけることができないのは、最も一般的な事故でしょう。オペレーティングシステムのディレクトリにログファイルを書き込むのはまったくいいわけではありません。また、最後に見たい場所に書き込むこともできます。ファイルのパスを指定していないため、プログラムのデフォルトの作業ディレクトリに書き込まれます。サービスの場合、c:¥windows¥system32またはc:¥windows¥syswow64 –