解決策(関連するstackoverflowに関する質問を含む)を広範囲に検索しましたが、まだ問題を解決する回答が見つかりません。私は仕事のプロジェクトでlog4netを使用していて、Visual Studioでプログラムを実行するとログファイルを取得します。 msiインストーラ(wix)を使用してプログラムをインストールすると、ログファイルが取得されません。最初に試したことのあるものを列挙し、続いて自分のコードを編集したものを示します。log4netインストール時にログファイルが作成されない
また、「appname」とはどこでも、私は実際にはappnameを置かず、単にプロジェクト名を投稿しないようにしました。
私は$ {USERPROFILE} \のAppData \ローカル[appnameの]ディレクトリにログファイルを配置することだ、パーミッションは問題ではありません。
インストールされているバージョンに存在する設定ファイルはapp.configではなくappname.exe.configなので、Assemblyinfo.csアセンブリステートメントをappname.exe.configに変更しました。これはしかし、私の問題を解決していない、それはまだビジュアルスタジオを介して実行中に動作し、インストールされているバージョンはありません。
log4net.dllとlog4net.xmlをインストールディレクトリに配信するようにproduct.wxsを変更しました。 (これを忘れて、アプリが起動しないので、戻ってきて追加しました)まだ変更はありません。
log4netを使用して1つのソリューション内に5つのプロジェクトがあります。私は[assembly: log4net.Config.XmlConfigurator(ConfigFile = "app.config", Watch = true)]
を使用していた
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "appname.exe.config", Watch = true)]
が、インストールディレクトリとbinに配置された変更設定ファイル名にこれを変更:assemblyinfo.csファイルのすべてには、以下の持っています。 app.configをの内部
(すべての可能なタイプミスを言い訳、私のdevのマシンがairgappedされ、私は、コードをコピー&ペーストすることはできません):
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<root>
<level value="ALL"/>
<appender-ref ref="MyAppender"/>
</root>
<appender name="MyAppender" type="log4net.Appender.FileAppender">
<file value="${USERPROFILE}\AppData\Local\appname\appname.log"/>
<appendToFile value="true"/>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %level - %message%newline"/>
</layout>
</appender>
</log4net>
</configuration>
と私はロガーを使用して、私のC#コードで:
あなたの構成があなたのApp.configファイルである場合private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
ありがとうございます!それで、私がファイルを指定した理由は、Log4Netを統合するときに最初にやったトラブルシューティングによるものでした。何らかの理由で私は上記のステートメントでログファイルを取得していませんでした。私は何かを見逃しているかもしれませんが、VSで動作している間に動作し、インストールされた後に動作します。私が他の答えで見つけられなかった重要な情報は、あなたが明示的にassemblyinfo.csで設定ファイルを指定すると、log4net要素をルートとして期待するlog4netでした。 – Josh
Peter、私は最近、あなたが単一の 'Execute'メソッド(または何らかの名前)で' ICommand'インターフェースについて書いた記事を読んで、AOPを実装するための手段としてデコレータと戦略を使っていますが、それを再び見つけてください。私のためのリンクを提供できますか? – ErikE