巧用CurrentThread.Name来统一标识日志记录(完结篇)
▄︻┻┳═一Agenda:
▄︻┻┳═一巧用CurrentThread.Name来统一标识日志记录
▄︻┻┳═一巧用CurrentThread.Name来统一标识日志记录(续)
▄︻┻┳═一巧用CurrentThread.Name来统一标识日志记录(完结篇)
▄︻┻┳═一asp.net拦截器
▄︻┻┳═一巧用CurrentThread.Name来统一标识日志记录(java-logback篇)
上一篇文章《巧用CurrentThread.Name来统一标识日志记录(续)》所述就是《巧用CurrentThread.Name来统一标识日志记录》里改用当前线程名统一记日志后的问题。 我在csdn里也提问了(here and here),很遗憾最终没有查到原因。不过,很欣赏@sp1234大哥中肯的意见:
设计软件,面向业务来设计,例如用一个自定义的变量来保存参数。这样不管这问题中不同的过程被调用时在同一个线程还是不同线程,变量的值都是一致的。
如果“高大上”到过分技术层面,由于我们不了解技术底层和问题,所以反而弄巧成拙。
当然,我倒不是刻意在tmp1构造器里去给当前线程的Name赋值。只能说,代码改动前就是在这个构造器里声明的logflag,所以,改动时自然就在这个构造器里给当前线程赋值。 没想到,就遇到了这个问题。
至于有同学发问说,ProcessRequest里获取不到当前线程Name,是不是因为不是同一个线程了, 我倒是测试了一下, 在tmp1.ashx.cs类里声明一个私有对象,在构造器里初始化, 然后在ProcessRequest里是可以取到的。 按这个应该可以推断出是同一个线程。 所以,为什么会出现帖子里的问题,的确不好分析。
姑且留作一个思考题吧。
最终的解决方案就是,取代构造方法而在ProcessRequest方法里给当前线程赋值。
public abstract class HandlerBase : IHttpHandler
{
protected readonly LogHelperUtil _LogHelperUtil; public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "application/json"; Thread.CurrentThread.Name = string.Format("[{0}_{1:HHmmssfff}_{2}]", this.GetType().Name, DateTime.Now, Guid.NewGuid().ToString().Replace("-", "").Substring(, ).ToUpper());
_LogHelperUtil = new LogHelperUtil(); ... ... }
}
巧用CurrentThread.Name来统一标识日志记录(完结篇)的更多相关文章
- 巧用CurrentThread.Name来统一标识日志记录(java-logback篇)
▄︻┻┳═一Agenda: ▄︻┻┳═一巧用CurrentThread.Name来统一标识日志记录 ▄︻┻┳═一巧用CurrentThread.Name来统一标识日志记录(续) ▄︻┻┳═一巧用Cur ...
- 巧用CurrentThread.Name来统一标识日志记录(续)
▄︻┻┳═一Agenda: ▄︻┻┳═一巧用CurrentThread.Name来统一标识日志记录 ▄︻┻┳═一巧用CurrentThread.Name来统一标识日志记录(续) ▄︻┻┳═一巧用Cur ...
- 巧用CurrentThread.Name来统一标识日志记录
▄︻┻┳═一Agenda: ▄︻┻┳═一巧用CurrentThread.Name来统一标识日志记录 ▄︻┻┳═一巧用CurrentThread.Name来统一标识日志记录(续) ▄︻┻┳═一巧用Cur ...
- 【数据库】通过触发器实现审计日志记录-demo篇
触发器实现审计日志记录(记录增.删.改) #创建测试表 CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, ...
- slf4j+log4j在Java中实现日志记录
小Alan今天来跟大家聊聊开发中既简单又常用但必不可少的一样东西,那是什么呢?那就是日志记录,日志输出,日志保存. 后面就统一用日志记录四个字来形容啦. 日志记录是项目的开发中必不可少的一个环节,特别 ...
- 用slf4j统一管理日志总结
用slf4j统一管理日志总结 参考网页:http://www.slf4j.org/ 一.使用slf4j统一管理并配置统一使用log4j日志 使用的jar:(slf4j-api-1.7.5.jar,jc ...
- Flunetd 用于统一日志记录层的开源数据收集器
传统的日志查看方式 使用fluentd之后 一.介绍 Fluentd是一个开源的数据收集器,可以统一对数据收集和消费,以便更好地使用和理解数据. 几大特色: 使用JSON统一记录 简单灵活可插拔架构 ...
- Spring Boot AOP 扫盲,实现接口访问的统一日志记录
AOP 是 Spring 体系中非常重要的两个概念之一(另外一个是 IoC),今天这篇文章就来带大家通过实战的方式,在编程猫 SpringBoot 项目中使用 AOP 技术为 controller 层 ...
- Taurus.MVC 微服务框架 入门开发教程:项目集成:5、统一的日志管理。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...
随机推荐
- 泡泡一分钟:Exploiting Points and Lines in Regression Forests for RGB-D Camera Relocalization
Exploiting Points and Lines in Regression Forests for RGB-D Camera Relocalization 利用回归森林中的点和线进行RGB-D ...
- [No0000E5]C# 运算符
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号.C# 有丰富的内置运算符,分类如下: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 其他运算符 算术运算符 运算符:A=10,B=20 ...
- python面向对象高级:枚举
在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数.这两种类型经常(但不总是)重叠. 枚举是一个被命名的整型常数的集合,枚举在日常生活中很常见,例 ...
- day7:set和深浅copy
1,判断字符串是不是空格isspace函数 s1 = ' ' s2 = ' ssss' print(s1.isspace()) print(s2.isspace()) 运行结果: True False ...
- mac下安装debug坑
mac默认情况下的php版本是很低的,当你直接用phpize的时候默认是使用mac默认安装的phpize版本,这个时候查看Phpinfo的时候是看不到xdebug的,这时候查看错误日志会收到这样的报错 ...
- [others] 一个酷酷的站
https://xkcd.com/ https://xkcd.com/1080/
- iOS将excel转plist
iOS将excel转plist 先把excel用Numbers打开,转换成CSV,然后新建一个工程,写下面的代码: - (void)viewDidLoad { [super viewDidLoad]; ...
- 转:jdk动态代理实现
原文链接: jdk动态代理 注:文章中用常用的流程实现 动态代理,流程逻辑比较清晰.文章后面对 “为什么要使用接口” 原理分析还未细看. jdk的动态代理为什么用接口,内部是什么原理呢?看了几篇文章貌 ...
- day4_处理json
说明:#json是一种通用的数据类型,所有的语言都认识.#k - v {}#json串就是一个字符串,不能根据key-value取值#json可以转成字典#json串就是字符串,可放在三引号中校验js ...
- Java+selenium 如何定位下拉框select
场景:需要进行下拉选择定位元素. 一.select菜单 select也是比较常见的,selenium封装了以下方法, 创建select WebElement selector = dr ...