在LOG4J中把日志写入远程数据库

基于log4j2搭建系统的日志记录框架 log4j2搭建日志系统 jdbc 阅读详情

LOG4J强大的功能让我爱不释手,为了不用跑到机房看日志,我打算把日志写入远程数据库,这样操作起来就方便了,同时又可以按时间、按关键词搜索,一举两得。

LOG4J提花了一个JDBCAppender的远程数据库输出方案,使用也很简单,在配置文件里写好驱动名、URL及远程数据库的登陆账号、密码,再加一个布局&SQL语句全部搞定,真当是方便极了。在我本机上测试没有问题,但欢天喜地移植到服务器上问题就来了,发现每次数据库连接特别慢,严重影响了程序的正常运行,这还得了,赶紧恢复到原来的状态,思索如何改进。

了解它的原理之后,问题的关键部分就很清楚了,JDBCAppender在向远程数据库写日志时,用的是短连接,虽然定义了一个BufferSize,但好像不起什么作用,这就相当于每次写日志都要重新建立一次数据连接,而建连接往往最耗时间的啦,能不能把我原来写的数据库连接池和LOG4J和JDBCAppender结合起来使用呢?

大的方向应该是没有问题,也搜索了一下别人实现的数据库连接池,但总觉得不是很满意,还是用自己的连接池放心。如何扩展原来的JDBCAppender、把数据库连接池传递进去,一开始没有搞明白,想了老半天,后来终于整明白了。我只需要继承原来的JDBCAppender,把getConnection()和closeConnection()两个方法重写即可,其它的都不用变,示例如下:

package  com.gftech.log4j;

import  java.sql.Connection;
import  java.sql.SQLException;
import  java.util.ArrayList;

import  org.apache.log4j.jdbc.JDBCAppender;

import  com.gftech.common.GFConn;
import  com.gftech.common.GFDB;

public   class  JDBCExtAppender  extends  JDBCAppender  {
    
protected String driver;

    
public static GFDB gfdb;

    
private ArrayList<GFConn> tempList;

    
public JDBCExtAppender() {
        
super();
        tempList 
= new ArrayList<GFConn>();
    }


    
/**
     * Override this to return the connection to a pool, or to clean up the
     * resource.
     * 
     * The default behavior holds a single connection open until the appender is
     * closed (typically when garbage collected).
     
*/

日志框架 --- Log4j log4j是一个流行的Java日志框架,是由 Apache 的一个开源项目。它允许开发人员通过将日志语句插入应用程序代码中来记录应用程序运行时的事件。它能够控制通过哪些目标输出的消息以及每个目标的格式。log4j主要是由 Logger,Appender,Layout 组成,Logger,日志记录器,控制日志的输出级别以及是否输出日志。Appender,控制日志被写入的位置,例如控制台、文件等。Layout,用于定义日志输出的格式。 阅读详情

相关推荐

Log4j日志的下载、简介、使用及代码示例

Log4j(log for java)是Apache的一个开放源代码项目,包名是,它为Java开发的項目提供了一种细腻的、功能强大的、使用方便的日志管理方式。通过使用Log4j,我们可以控制日志信息输送的目的地(控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等)、日志的输出格式、日志的生成过程(通过定义每一条日志信息的级别)。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

u010804417的博客 1208

SpringBoot中的日志组件Log4j2实战

本文将从零开始带领读者实现一个 Spring Boot 的应用项目中集成Log4j2作为日志组件的功能。Log4j2是一个非常流行的Java日志框架,其优秀的特性、强大的性能以及灵活的配置能力使得它在实际应用中的地位得到了极高的提升。随着微服务架构和云原生时代的到来,越来越多的人开始采用Spring Boot+Spring Cloud这种“约定大于配置”的开发模式。而当我们需要对应用系统进行日志处理时,选择Log4j2可能成为一个不错的选择。

AI天才研究院 1611

Log4j2日志框架完整配置指南与实战

在XML格式中,Log4j2配置文件通常包含根标签,并定义命名空间与schema信息。逐行解读::设置Log4j2内部日志的输出级别,用于调试配置问题。xmlns和:定义命名空间与XSD验证路径,确保配置文件结构正确。逻辑分析:命名空间和schema定义保证了配置文件的合法性与兼容性。虽然这些信息在开发中可能被忽略,但在生产环境中是确保配置稳定的重要组成部分。

weixin_42471823的博客 995

log4j2.xml记录日志到到数据库

演示了java记录通过log4j2记录日志到mysql数据库中

如何借助log4j把日志写入数据库中

本JavaWeb工程主要演示如何借助log4j把日志写入数据库中,工程中的代码均有详细的注释说明,相信您通过该例子一定能掌握如何借助log4j把日志写入数据库中,欢迎下载。

检索生成(RAG) vs 长文本大模型:实际应用中如何选择?

大模型的上下文理解能力直接影响到 LLMs 在复杂任务和长对话中的表现。本期内容聚焦于两种主流技术:长上下文(Large Context Windows)和检索增强生成(RAG)。这两种技术各有何优势?在实际应用中,我们又该如何权衡选择?文章不仅详细阐述了这两种技术的工作原理,还深入分析了它们在效率、准确性和实施成本等方面的差异。文章特别提到了在执行重复性任务时使用 Context Caching 优化长上下文的优势,然而,缓存策略的效果很大程度上取决于提示词的可预测性。

2401_85782938的博客 1255

HX720数据采集实战:从硬件连接到姿态解析(含避坑指南)

本文详细介绍了HX720高精度ADC芯片在数据采集与姿态解析项目中的实战应用。内容涵盖从硬件电路设计、驱动源码编写与优化,到原始数据处理、校准以及最终姿态角度计算的完整流程,并提供了关键的避坑指南和调试技巧,帮助开发者高效完成从传感器信号到可用姿态数据的转换。

i8j9k0l1的博客 488

python毕设 基于Web的中药材信息查询系统程序+论文

***(程序+源码+数据库+调试部署+开发环境)论文文档1,文末可获取,系统界面在最后面。****

m0_74825541的博客 1257

FPGA可重构技术

介绍FPGA 可重构技术的实现方法,包括全局重构和部分重构

航天领域资深码农,型号经验丰富,一线干货分享 1989

QComboBox设置最大显示数量多余的用滑动条,以及QComboBox::setMaxVisibleItems()不起作用的问题

QComoboBox是Qt封装的一个选择框的东西,但是我在使用过程中有一点感觉很不好,如图: 不论你往里面添加多少个它都会给你显示全部,甚至给你铺满全屏,后来看了官方文档发现有个setMaxVisibleItems()的方法,我欣喜若狂啊,终于特么的能解决了,但是,很遗憾,不知为啥,我设置上之后并没有起作用,依然会显示全部,后来搜了百度发现有个人是这样解决的 QComboBox *box = ne...

Aboveground的博客 4919

NuPlayer 之 Renderer

触发postDrainAudioQueue_l()或postDrainVideoQueue()开始渲染。解码器输出数据 → NuPlayer::Decoder::onMessageReceived。音频数据存入mAudioQueue,视频数据存入mVideoQueue。• 每次写入后通过mNotifyConsumed通知解码器。• 通过AudioSink::write()写入音频设备。• 根据VSync信号和音频时钟调整渲染时机。• 通过Surface直接提交给显示系统。

aningxiaoxixi的博客 309

第1关:STL模板之queue实例一:最少个数

头歌自创答案

xiyunSacire的博客 818

毫米波雷达入门知识

毫米波雷达入门知识

ssbzxcvbnm1234567的博客 5443

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

上一篇: 在Log4j中实现日志的Email自动发送
下一篇: 即时日志记录:使用 Jabber 增强 log4j 的功能
sinboy
博客等级 码龄25年 239粉丝 65原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值