当前位置: 首页 > 面试题库 >

如何在Log4j中清理日志消息以将其保存在数据库中

谭景明
2023-03-14
问题内容

我正在尝试将日志消息保存到中央数据库。为了做到这一点,我在log4j的xml配置中配置了以下Appender:

<appender name="DB" class="org.apache.log4j.jdbc.JDBCAppender">
            <param name="URL" value="jdbc:postgresql://localhost/logging_test" />
            <param name="user" value="test_user" />
            <param name="password" value="test_password" />
            <param name="sql" value="INSERT INTO log_messages ( log_level, message, log_date ) VALUES ( '%p', '%m', '%d{yyyy-MM-dd HH:mm:ss}' )" />
</appender>

正常工作,除了某些消息包含’,然后附加程序失败。

是否有捷径可寻?


问题答案:

看一下这个非官方的Log4J
JDBCAppender
,它可以解决此问题并在Apache
2.0许可下分发。引用其功能以进行比较org.apache.log4j.jdbc.JDBCAppender

  • 登录到(关系)数据库
  • 灵活的连接处理(尚不支持数据源)
  • 灵活的sql命令来执行实际的日志记录
  • 支持准备好的语句和存储过程(J2SDK 1.4+)
  • 启用记录带有特殊字符的消息,例如’(单引号)和,,(逗号)
  • 灵活的表和列结构
  • 灵活的ID生成
  • 允许使用多个PatternLayout应用程序;在一个或多个列中
  • 支持J2SDK 1.3、1.4和1.5
  • 支持Log4j 1.2.9和当前开发

或者,你应该认真考虑这个选项,交换机从log4j的到它的继承者,的logback(这就是事情发生的),其具有DBAppender使用PreparedStatement(见源),可以使用JNDI数据源,连接池(这是一个很大有关此附加程序的更多信息,请参见联机手册http://logback.qos.ch/manual/appenders.html#DBAppender



 类似资料:
  • 问题内容: 我必须使用JavaScript创建一个表单,用户将上载JPG文件并与其他信息(例如名称,电子邮件等)一起提交。当用户单击提交时,表单中的所有信息将被加载到值对象中。对于图像文件,我将其设置为。 所以假设: 我还设置了一个servlet来处理提交,但是我不确定如何开始。上传如何进行?用户提交时,如何获取图像信息?这是屏幕截图:http : //imageshack.us/f/32/776

  • 问题内容: 我希望日志在应用程序运行期间一直滚动,但是我希望在重新启动应用程序时重新启动日志。 更新: 根据erickson的反馈,我的appender如下所示: 我只是添加了以下行: 现在,它会在启动时截断基本日志文件,但不保留滚动文件。 问题答案: 如果将参数设置为,则在应用程序重新启动时,基本日志文件将“重新启动”。您是说要删除所有“滚动”日志文件吗?

  • 我正在创建一个Apache Beam streaming处理管道,以在GCP Dataflow中运行。我有许多扩展DoFn和combinefn的转换。在DoFn中,使用数据流作业详细信息中的日志窗口,日志可以很好地可视化。但是,不显示来自CombineFn转换的日志。

  • 问题内容: 我想保存额外的信息,然后再将总订单发送到Paypal。对于每一项,我都在MySQL数据库中创建了一个要存储的列。现在,我正在考虑将其保存为一个数组,以后可以在创建PHP页面时阅读。多余的字段取自输入表单字段。 通过使用数组,可以确保不混淆信息吗? 问题答案: 您可以使用/ 存储数组。使用该解决方案,它们不能轻易地从其他编程语言中使用,因此您可以考虑使用/ 代替(它为您提供了广泛支持的格

  • 我正在尝试用angular和MongoDB创建一个博客。当我提交博客时,它会保存在数据库中(使用postman进行检查)。我在输入标记和ckeditor中输入的数据也会出现在测试mat-card组件中。但当我尝试提交博客时,它不会显示在blog-page组件中。blog存储在数据库中。我的onBlogSubmit()函数有问题,但我不知道是什么问题: 这是我尝试过的: 我的post.service

  • 问题内容: 我正在使用Hibernate / Spring应用程序来管理一些电影。 班级电影与班级流派有着多对多的关系。这两个类都使用GeneratedValue注释生成了ID。 使用@Cascade(CascadeType.SAVE_UPDATE)通过电影对象保存了流派。我对流派的type属性(它的名称;例如“ Fantasy”)设置了唯一的约束。 我现在想做的是让Hibernate检查是否已经