oncurrent ash ap-log4j日志存入数据库的多线程并发问题

问题描述

log4j日志存入数据库的多线程并发问题
我使用Mina框架来接收多线程的数据,当我想取得创建时间(从sessionCreated()方法获得)、session的上下文信息(从messageReceived()方法获得)以及断开时间(从sessionClosed()方法获得)的时候,我使用log4j的MDC来输出到数据库。可是问题来了,因为要取得断开时间,必须得第一个线程断开后触发sessionClosed()方法取得断开时间后才能将第一个线程的所有信息才会存入到数据库;但是当第一个线程没断开,第二个线程就进来了发送数据,而且马上触发sessionClosed()线程,那么它就覆盖了第一个线程的信息了。使得本来属于第一个线程的信息取不到了。其中我使用ConcurrentHashMap来存储进入数据库前的信息 。不知道有什么更好的方法可以解决呢?

解决方案

数据库可以共享同一个连接,然后你写入数据库,由数据库自己来做数据并发处理

解决方案二:
线程不要操作全局数据,或者做互斥

解决方案三:
不然就把数据放不同的队列

时间: 2024-10-04 15:28:16

oncurrent ash ap-log4j日志存入数据库的多线程并发问题的相关文章

如何使用log4j把日志写入数据库

之前做的一个项目有这么个要求,在日志管理系统里,需要将某些日志信息存储到数据库里,供用户.管理员查看分析.因此我就花了点时间搞了一下这一功能,各位请看. 摘要:我们知道log4j能提供强大的可配置的记日志功能,有写文件的.打印到控制台的等等,但有时我们需要它把日志输出到后台数据库中,log4j的强大的可扩展性支持了这一点,以下就是具体的实现. 关键词:log,log4j,日志,Java,DB,数据库,slf4j 前提:已经配置好slf4j.log4j,能正常的往文件或控制台写日志. 需求:将日志

[Java开发之路](16)学习log4j日志

1. 新建一个Java工程,导入Jar包(log4j-1.2.17.jar) Jar包下载地址:点击打开链接 2. 配置文件:创建并设置log4j.properties # 设置 log4j.rootLogger = debug,stdout,D,E   # 输出信息到控制台 log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.append

log4j日志配置详解

文章出处为 http://george5814.github.io/2016/10/09/log4j-config.html 一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置. 1.Loggers Loggers组件在此系统中被分为五个级别:DEBUG.INFO.W

多线程下log4j日志混乱的问题

问题描述 配置文件如下:<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPElog4j:configurationSYSTEM"log4j.dtd"><log4j:configurationxmlns:log4j='http://jakarta.apache.org/log4j/'><!--definesomeappendershere--><append

xml数据存入数据库的解决办法

xml|解决|数据|数据库     当我们要把xml格式的数据存到数据库中.通常的办法是解析xml文件,读出xml中的数据类型并根据它创建数据库表和表之间的结构,读出xml中的数据,存入到数据库之中. 在读nodeType是要注意二个问题: 1.读某个节点数据类型可以对上一个节点的孩子,或直接使本节点的类型,只不过要严格注意定位正确,不要混淆. 例:link.getElementsByTagName("link").item(0).getFirstChild().getNodeType

--压缩日志及数据库文件大小

数据|数据库|压缩 --压缩日志及数据库文件大小 /*--特别注意 请按步骤进行,未进行前面的步骤,请不要做后面的步骤 否则可能损坏你的数据库.--*/ 1.清空日志 DUMP  TRANSACTION  库名  WITH  NO_LOG    2.截断事务日志: BACKUP LOG 数据库名 WITH NO_LOG 3.收缩数据库文件(如果不压缩,数据库的文件不会减小 企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件  --选择日志文件--在收缩方式里选择收缩至XXM

将XML结点转换成JAVABEAN并存入数据库

xml|数据|数据库|转换 1.概述 我们要将外部系统给的XML文件进行解析,并存入到数据库. 但是我们并没有DTD或者Schema,只有一个WORD格式的说明文档:更离谱的是,XML结点树的结构(即XML结点与XML结点之间的关系)与业务Bean树的结构(即业务Bean与业务Bean的关系)并不完全一致,比如说,从业务角度讲,一只猪有只猪头,而在XML里,却写成了 pig --content --pighead 的三级关系,无端端多了一个content结点! 没有DTD/Schema,结构又不

转载: 用纯ASP代码实现图片上传并存入数据库中

上传|数据|数据库 用纯ASP代码实现图片上传并存入数据库中 用ASP编写网站应用程序时间长了,难免会遇到各式各样的问题,其中 关于如何上传文件到服务器恐怕是遇见最多的问题了,尤其是上传图片,比如 你想要在自己的社区里面实现类似网易虚拟社区提供的"每日一星"的功能, 就要提供给网友上传照片的功能.上传图片文件到服务器可以使用各种免费的 文件上传组件,使用起来功能虽然很强大,但是由于很多情况下,我们只能使 用免费的支持ASP的空间或者租用别人的虚拟空间,对于第一种情况,我们 根本就没有可

无组件图片与文本同步存入数据库的最简单的办法

数据|数据库|无组件 无组件图片与文本同步存入数据库的最简单的办法 动感教育网 发布日期:2001-7-17 字数:4798 一:前言 首先,没有料到图片与文本的上传会引起这么大的注意.上一篇贴子(Id=435906)贴出后,有不少人来信说看不懂.或是仍然不能实现.我就以一种完全简单的手法.完成无组件的文本与图片上传数据库所有过程.希望能帮助所有对此有疑问的网友. 二:准备工作 按照惯例,我先将我的测试环境告诉大家.系统:Win98se + pws + asp 编程环境:Visual Inter