Серверный сервер Log4Cxx sql - PullRequest
2 голосов
/ 23 мая 2011

Можно ли при использовании 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 SQL Server 2008.

Спасибо!

1 Ответ

0 голосов
/ 27 марта 2013

Я получил следующее на работу;определите источник ODBC с именем LPErrorLog, определите логгер входа в систему с некоторым паролем (abc123), настройте 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>

...