- 浏览: 58043 次
- 性别:
- 来自: 上海
文章分类
最新评论
在企业开发中,常常会遇到这样的需求:通过一个唯一标识将一个线程(或者一个客户端)从开始进入系统一直到退出该系统完整的系统调用路径产生的所有日志串联起来。
这样做带来的一个明显的好处就是:通过命令 grep 唯一标识 *.log 可以获取该线程(客户端)本次调用的所有日志。这对于排查系统问题是有莫大好处的。下面列举两种解决方案:
在处理之前,必须整理出所有系统调用的入口点。比如系统A,有三个入口点,分别是通过页面访问,外部系统调用A系统发布出去的WS服务,A系统接收外部系统发送的消息。
方案一:通过埋点或者拦截器在系统入口方法调用之前设置本地线程变量的值,一般是当前系统时间,比如:
org.apache.log4j.NDC.push(System.nanoTime());
在线程(客户端调用)退出的时候,调用:
org.apache.log4j.NDC.remove();
注意配置文件中的布局格式中一定要加上%x
可参考:http://blog.csdn.net/NEU_20063508/article/details/3872226
方案二:通过埋点或者拦截器在系统入口方法调用之前设置本地线程变量的值,一般是当前系统时间。和方案一不同,这里的当前时间是放在ThreadLocal变量中的。比如:
private static ThreadLocal<Long> timeKey=new ThreadLocal<Long>();
timeKey.set(System.nanoTime());
然后对Log日志输出器做一个封装,重写所有的日志输出方法,使得每个日志输出的后面都加上timeKey.get();方法
最后在线程调用退出的时候,清空资源:
timeKey.set(null);
发表评论
-
JVM参数以及调优
2011-10-24 23:39 837一、JVM配置参数中文说明: 1、-Xmixed ... -
分布式服务框架之NIO(一)
2011-10-22 23:08 1346NIO在实现分布式服务框架中非阻塞高并发的服务器端功能 ... -
Spring声明线程池配置示例
2011-09-13 14:19 768<bean id="***Ta ... -
HTTPS下载的问题
2011-08-31 17:18 1765遇到一个很恶心的问题,开发以及测试环境是http协议,下 ... -
实现自己的csv文件解析引擎
2011-08-26 14:29 1491前言: 这里仅仅支持Excel文件导出的CSV文件,解 ... -
迷茫了
2011-08-08 23:09 769又迷茫了,感觉没事可做,什么都不想做 实际并不是没事可做,实 ... -
通用的excel报表生成工具类
2011-07-20 20:41 1155下面这个工具类是今天半天的劳动成果。 以后自己也可能用得到。 ... -
正则表达式元字符总结
2011-07-14 23:22 955正则表达式元字符总结如下: 点号(.):任何单字符的通 ... -
windows下perl开发环境搭建
2011-07-09 22:07 69351、下载并安装ActivePerl,貌似不需要额外的配置,一步 ... -
如何让右键菜单出现“命令行在这里”,即cmd here
2011-06-29 00:24 4748要在命令行下跳转到某个嵌套很深的目录下时,使用cd命令等比 ... -
使用JMock简介
2011-06-28 13:36 985一、常用关键字 one ... -
利用数据库锁实现简单的防并发编程
2011-06-22 23:27 1131大约有两类情况: 1、一个程序代码块同一时刻只允许一个 ... -
程序员如何减少BUG
2011-06-21 22:04 2539最近一个项目出了大量的BUG,很是惭愧,有没有可以尽量规避BU ... -
一些常用的正则表达式(项目中经常用到)
2011-06-15 17:11 8148最近做的一个内部系统项目,涉及大量的文本校验,里面用到了一些常 ... -
解析Excel文件转换科学计数法字符串为正常数字
2011-06-14 22:55 5685问题出现的情形是这样的: excel文件中某个字段,既 ... -
js正则表达式去除表单提交字符串前后的空格
2011-06-13 19:31 1474str为表单提交数据。 str=str.replace ... -
debug容器启动类报MMO异常解决办法
2011-06-10 19:58 746类似的,在eclipse的VM arguments中设置参数: ... -
理想的设计特征
2011-06-09 00:57 736其实下面这些是来自于代码大全,觉得讲得实在是精辟无比,想摘抄下 ... -
最近的几点关于编码的心得
2011-05-25 00:35 6831、编写一个类或者新建一个变量的时候,名字问题需要仔细的斟酌斟 ... -
JMS实现简单的聊天程序
2011-05-15 19:30 6059实现这个简单的聊天 ...
相关推荐
在IT行业中,模拟摄像头与多线程并发处理是两个重要的技术领域,特别是在视频通信和网络编程中。本文将深入探讨“模拟摄像头libuv支持多线程并发”这一主题,结合“模拟IPC”这一标签,以及文件名称“IpcSimulate”...
总的来说,开发Delphi SIP客户端调用程序是一项涉及通信协议、组件编程、多线程技术和实时系统设计等多个领域的复杂任务。通过理解和掌握SIP协议,合理利用如MonitorAgent这样的组件,以及深入实践,我们可以构建出...
Java多线程端口扫描是网络管理与安全领域中常用的一种技术,主要用于检测网络设备上哪些端口处于开放状态,从而分析网络的安全性或者优化网络配置。本程序通过利用Java的多线程特性,提高了扫描速度,使得在短时间内...
但在高并发的环境下,阻塞模型可能会导致线程资源的大量消耗。 异常处理是HTTP客户端必须处理的另一个重要问题。HTTP协议处理器提供了对协议异常的捕获和处理机制,使得在发生协议错误时能够进行相应的处理。 异步...
在编程领域,多线程是实现并发执行任务的重要方式,特别是在多核处理器系统中,它能充分利用硬件资源,提高程序的执行效率。本主题将深入探讨如何在编程中创建多线程以及如何实现线程同步,特别关注CEVENT对象在...
- 为每个新连接创建一个独立的线程,以便在不影响其他连接的情况下处理该客户端的通信。 - 在线程中,可以使用Socket的Receive和Send方法读取和发送数据。 - 使用线程同步机制(如Mutex、Semaphore或Monitor)...
在IT行业中,多线程是一种常见的编程技术,特别是在C#这样的多任务编程环境中。这个名为“多线程访问网页测试”的...通过学习和实践此类项目,开发者可以提升在高并发场景下的编程能力,更好地理解和应用多线程编程。
这个"client-server demo"实例将演示如何在Linux下使用C语言构建一个支持多进程或多线程并发处理客户端连接的服务器,这有助于理解网络编程的核心概念和实践技巧。通过对源代码的分析和学习,可以进一步提升对Linux...
从给定的文件信息来看,我们正在探讨的主题是“Java多线程软件”,具体到一个基于Java的FTP(File Transfer Protocol)服务器与客户端的应用。这个应用利用了多线程技术来处理并发的文件传输请求,这在现代网络环境...
2. **线程安全**:确保使用的库函数在多线程环境下是安全的,避免因非线程安全的函数调用导致的问题。 3. **信号量**:当需要控制线程间的协作,比如限制同时访问套接字的线程数量时,可以使用信号量。 4. **条件...
在Linux操作系统中,基于Socket的多线程编程是网络编程中的一个重要领域,它结合了Socket通信和多线程技术,可以实现高效的并发服务。Socket是网络通信的基本接口,TCP(Transmission Control Protocol)协议则提供...
在本项目中,我们探索了如何将Spring MVC框架与多线程、线程池和Apache Kafka集成,构建一个高效的数据处理系统。以下是关于这些技术及其整合的详细知识点: 1. **Spring MVC**: - Spring MVC是Spring框架的一个...
日志记录的内容和日志存储方式可自定(比如可以记录客户端的连接时间、客户端IP等,日志存储为.TXT或.log文件等),分别在1和2的服务器程序中调用该日志程序模块,使多线程TCP服务器和线程池TCP服务器都具备日志功能...
在Web服务器中,多线程技术用于处理并发请求,使得服务器能够同时服务于多个客户端,提高资源利用率和响应效率。Java语言提供了丰富的多线程API,如`Thread`类和`Runnable`接口,使得创建和管理线程变得简单。 2. *...
客户端采用了多进程的方式处理任务队列中的数据,并通过`Thrift`调用服务端接口。当服务端进程数量不足时,客户端可能出现卡死的情况。 ```python docQue = queues.Queue(maxsize=1000) pCount = 15 class ...
在这个例子中,我们将探讨如何在QT框架下利用TCP协议进行多线程通信,以实现客户端从服务器获取不同数据的功能。以下是对这个主题的详细解释: 首先,QT(Qt)是一个跨平台的应用程序开发框架,它支持多种编程语言...
WCF支持服务版本控制,允许在不中断现有客户端的情况下升级服务。同时,WCF还与其他平台和服务(如SOAP、REST、WS-*标准)具有良好互操作性,扩大了其应用范围。 综上所述,WCF在.NET智能客户端开发中扮演着重要...
在Delphi7中,开发多线程下载文件的应用程序是一项技术含量较高的任务,涉及到并发处理、网络通信以及文件I/O等多个方面。在这个场景下,我们通常会利用Indy10库,尤其是其中的IdHTTP组件来实现网络请求,再结合多...
在Unix操作系统中,实现服务端与多个客户端的通信是一个常见的任务,特别是在开发网络应用程序时。这里我们将探讨如何利用`select`函数以及Unix提供的其他进程间通信(IPC)机制,如信号量、消息队列和共享内存,来...
在本项目中,Java被选为实现多线程OCR服务器的语言,因为它提供了丰富的多线程API,如`java.util.concurrent`包,可以方便地创建和管理并发任务。 【项目结构与实现】 “HeliosServer”可能包含以下组件: 1. **...