使用Log4Cxx时,是否可以将日志写入MS SQL服务器? 我已经谷歌搜索了一段时间,并找到了一些使用ODBCAppender的例子。 E.G:
<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>
也许我只需要'Driver'字段的正确值?我正在使用MS SQL Server 2008。
谢谢!
答案 0 :(得分:0)
我已经得到了以下工作;定义名为LPErrorLog的ODBC源,使用某个密码(abc123)定义登录“logger”,配置SQLServer以支持WIndows和SQLServer身份验证。测试您的ODBC源,确保您可以登录并访问目标数据库(下面的示例中的LPErrorLog)配置您的ConversionPattern以匹配数据库中的字段。暂时为普通文件追加器配置相同的ConversionPattern,然后在记录到文件后将文件生成的INSERT INTO字符串括起来,将其放入SQL Server Management Studio脚本,然后执行它以验证它是否将所需内容插入到目标数据库中,它成功了。
<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>