2

Log4Cxxを使用している場合、ログをMS SQLサーバーに書き込むことはできますか?私はしばらくの間グーグルをしていて、ODBCAppenderを使用するいくつかの例を見つけました。例えば:

<appender name="MyOdbcMysqlAppender" class="org.apache.log4j.odbc.ODBCAppender">
    <param name="URL" value="Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=errorlog;User=logger;Password=abc123;Option=3;"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="INSERT INTO errorlog (errormessage) VALUES ('%d - %c - %p - %m')"/>
    </layout>
</appender> 

たぶん、「ドライバー」フィールドに正しい値が必要ですか?MS SQLServer2008を使用しています。

ありがとうございました!

4

1 に答える 1

0

私は次のように動作しました。LPErrorLog という名前の ODBC ソースを定義し、パスワード (abc123) を使用してログイン 'ロガー' を定義し、Windows と SQLServer 認証の両方をサポートするように SQLServer を構成します。ODBC ソースをテストし、ターゲット DB (以下の例では LPErrorLog) にログインしてアクセスできることを確認します。DB のフィールドと一致するように ConversionPattern を構成します。通常のファイル アペンダー用に同じ ConversionPattern を一時的に構成し、ファイルにログを記録した後、結果の INSERT INTO 文字列をファイルからスカーフし、それを SQL Server Management Studio スクリプトにドロップし、それを実行して、必要なものがターゲット DB に挿入されることを確認します。 、それが成功すること。

<appender name="MySqlAppender" class="org.apache.log4j.odbc.ODBCAppender">
 <param name="URL" value="DSN=LPLogStore;Server=localhost\SQLEXPRESS;Database=LPErrorLog;Uid=logger;Pwd=abc123"/>
 <layout class="org.apache.log4j.PatternLayout">
  <param name="ConversionPattern" value="INSERT INTO [LPErrorLog].[dbo].[errorlog] ([Logger],[LogTime],[Level],[FileName],[Location],[LineNo],[Message]) VALUES ('%c','%d{dd MMM yyyy HH:mm:ss,SSS}','%p','%F','%l','%L','%m')" />
</layout>

于 2013-03-27T17:06:23.103 に答える