- PR -

log4netの設定ファイルの配置と読み込み

1
投稿者投稿内容
misaki
会議室デビュー日: 2004/11/16
投稿数: 14
投稿日時: 2004-11-16 11:51
初めて投稿します。
よろしくお願いします。

現在C#でのWEBシステムを開発しております。
そこでLog出力をlog4netを使用してloggingさせようと
していますが上手くlogging出来ずに困っています。

ソースの中で設定ファイル(C://Log4net.config)を読み込みloggingすることは成功しました。
しかし、VisualStadioのデバッグモードでの起動時にlog4netの設定ファイルを
読み込むことが出来ません。
設定等は以下のURLを参考に設定を行いました。
http://tsune.japan.webmatrixhosting.net/NWiki.aspx?page=log4net#heading:9

JAVAでのLog4Jの場合はクラスパスが通っている箇所に設定ファイルを配置して
置けば良かったのですが、Log4Netの場合はどこに配置しても上手く読み込んで
くれません。

現在の状況は以下の通りです。
◆log4net.configという名前で以下のファイルを作成
(配置場所は「C:\Inetpub\wwwroot\[PJ名]\log4net.config」)

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!-- Register a section handler for the log4net section -->
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
</configSections>
<appSettings>
<!-- To enable internal log4net logging specify the following appSettings key -->
<!-- <add key="log4net.Internal.Debug" value="true"/> -->
</appSettings>
<log4net>
<!-- ログファイル出力用 -->
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<param name="File" value="C://Sample.log" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[Header]\r\n" />
<param name="Footer" value="[Footer]\r\n" />
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>

<!-- Setup the root category, add the appenders and set the default level -->
<root>
<level value="WARN" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="ConsoleAppender" />
</root>

<!-- Specify the level for some specific categories -->
<logger name="Sample.LoggingExample">
<level value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
</logger>
</log4net>
</configuration>
-----------------------------------------
◆AssemblyInfo.csに以下を追加
// Configure log4net using the .config file
[assembly: log4net.Config.DOMConfigurator( Watch=true)]

◆ソース
private static readonly ILog logger = LogManager.GetLogger("名前空間.クラス名");

// Log出力箇所
log.Error("Error!!!!");

長文になってしまいましたが、log4netでの出力に成功されている方教えてください。
参考URLでも結構です。
よろしくお願いいたします。
にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2004-11-17 09:07
web.config に書いてもだめですか?
misaki
会議室デビュー日: 2004/11/16
投稿数: 14
投稿日時: 2004-11-17 09:45
にしざき様
おはようございます。
回答ありがとうございます。

log4netの設定をweb.configでは無く外だしにしたいのですが
可能でしょうか?
(.NETの経験が2ヶ月足らずでこの辺りの設定ファイルの仕組みを理解していません。)

http://tsune.japan.webmatrixhosting.net/NWiki.aspx?page=log4net#heading:9
↑参考のサイトを見ると出来そうな気もするのですが・・・

Web.Configに定義するのが通常なのでしょうか?
小野@どっとねっとふぁん
ぬし
会議室デビュー日: 2001/10/30
投稿数: 402
投稿日時: 2004-11-17 10:36
dllに対して設定ファイルを別に記述することはできません。
Windowsアプリの場合は、App.config、Webの場合はweb.config内に
書くしかないと思います。

独自の設定ファイルを読み込んできちんと設定できるような
プログラムを記述すれば別だとは思いますが。
たいざん
会議室デビュー日: 2004/11/17
投稿数: 1
投稿日時: 2004-11-17 11:25
◆AssemblyInfo.cs
// Configure log4net using the .config file
[assembly: log4net.Config.DOMConfigurator(ConfigFileExtension=".config", Watch=true)]

とすれば、App.configに記述した<configuration>情報を見てくれると思います。

[ メッセージ編集済み 編集者: たいざん 編集日時 2004-11-17 11:29 ]
misaki
会議室デビュー日: 2004/11/16
投稿数: 14
投稿日時: 2004-11-17 11:29
小野@どっとねっとふぁん様

引用:

小野@どっとねっとふぁんさんの書き込み (2004-11-17 10:36) より:
dllに対して設定ファイルを別に記述することはできません。
Windowsアプリの場合は、App.config、Webの場合はweb.config内に
書くしかないと思います。

独自の設定ファイルを読み込んできちんと設定できるような
プログラムを記述すれば別だとは思いますが。




回答ありがとうございました。
やはり、簡単には行かないようですね。

Web.Configに記述して読み込むようにいたします。
この辺りを明確に記載してあるサイトってありませんよね。

にしざき様、小野@どっとねっとふぁん様、ありがとうございました。
1046
会議室デビュー日: 2004/11/18
投稿数: 1
投稿日時: 2004-11-18 17:48
私は、vbでASP.NET開発しているのですが、設定ファイルをweb.configには書いてません。

<Assembly: log4net.Config.DOMConfigurator(ConfigFile:="設定ファイルフルパス", Watch:=True)>

で読み込めているのですが。。
misaki
会議室デビュー日: 2004/11/16
投稿数: 14
投稿日時: 2004-11-24 18:38
1046さんの方法は試してみましたが私の方では
いまだに上手く動きません。

とりあえず以下の方法で動きましたので記載しておきます。

1.ダウンロード
http://sourceforge.net/project/showfiles.php?group_id=31983&release_id=171808
今回は、「1.2.0 Beta8 」を使用する

2.インストール
ダウンロードしたファイルを解凍する。
解凍した先の
C:\Inetpub\wwwroot\plugin\log4net-1.2.0-beta8\bin\net\1.1\release\log4net.dll

C:\Inetpub\wwwroot\JJY\bin
の中にコピーする。
その後、参照参照設定でbinに配置したdllを読み込む。

3.Global.asax.csを書き換える
------------------------------------------------------------------------------
using System;
using System.Collections;
using System.ComponentModel;
using System.Web;
using System.Web.SessionState;
using log4net.Config; ←追加

namespace JJY
{
/// <summary>
/// Global の概要の説明です。
/// </summary>
public class Global : System.Web.HttpApplication
{
/// <summary>
/// 必要なデザイナ変数です。
/// </summary>
private System.ComponentModel.IContainer components = null;

public Global()
{
InitializeComponent();
}

protected void Application_Start(Object sender, EventArgs e)
{
// Initialise the logging when the application loads
追加→ log4net.Config.DOMConfigurator.Configure();
}

// ...以下省略...
}
}
------------------------------------------------------------------------------
4.Web.configを書き換える
------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>


<!-- Web Service standard configuration -->

<system.web>

<!-- ...省略... -->

</system.web>


<!-- Logging Configuration -->
<log4net>
<!-- コンソール出力用 -->
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
<!-- ログファイル出力用 -->
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<param name="File" value="C://sample.log" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[Header]\r\n" />
<param name="Footer" value="[Footer]\r\n" />
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
<!-- ログファイル出力用(日付またはファイルのサイズ制約に基づいた多数のログを生成) -->
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="SampleRolling.log" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="10" />
<param name="MaximumFileSize" value="100KB" />
<param name="RollingStyle" value="Size" />
<param name="StaticLogFileName" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[Header]\r\n" />
<param name="Footer" value="[Footer]\r\n" />
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>

<!-- Setup the root category, add the appenders and set the default level -->
<root>
<level value="WARN" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="ConsoleAppender" />
</root>

<!-- Specify the level for some specific categories -->
<logger name="Sample.LoggingExample">
<level value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
</logger>
</log4net>

</configuration>
------------------------------------------------------------------------------
5.ソースの記述方法
ログ出力ソースに
//-----------------------------------------
private static readonly ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
//-----------------------------------------
を記述する。
出力したい箇所に
//-----------------------------------------
try
{
if(logger.IsInfoEnabled)
logger.Info("更新処理開始");
// 更新処理
result = business.updateMaster();
if(logger.IsInfoEnabled)
logger.Info("更新処理終了");
}
catch(Exception ex)
{
// デバッグ
if(logger.IsDebugEnabled)
logger.Debug("デバッグ::resurt>>" + result);
// 警告
if(logger.IsWarnEnabled)
logger.Warn("警告発生");
// エラー
if(logger.IsInfoEnabled)
logger.Error("エラー発生", ex);
// 致命的エラー
if(logger.IsFatalEnabled)
logger.Fatal("致命的エラー発生", ex);
}
//-----------------------------------------
のように記述する。

以上
**以下の方法で動くようになったらまた返信します**
<Assembly: log4net.Config.DOMConfigurator(ConfigFile:="設定ファイルフルパス", Watch:=True)>

1

スキルアップ/キャリアアップ(JOB@IT)