巧用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 架构在大并发的演进过程更简单 ...
随机推荐
- 蓝桥杯_算法训练_区间k大数查询
问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. 第二行包含n个正整数,表示给定的序列. 第三个包含一个正整数m,表示询问个数 ...
- LeetCode 11 - 盛最多水的容器 - [双指针暴力]
题目链接:https://leetcode-cn.com/problems/container-with-most-water/description/ 给定 n 个非负整数 $a_1,a_2,\cd ...
- [No0000178]改善C#程序的建议1:非用ICloneable不可的理由
好吧,我承认,这是一个反标题,实际的情况是:我找不到一个非用ICloneable不可的理由.事实上,接口ICloneable还会带来误解,因为它只有一个Clone方法. 我们都知道,对象的拷贝分为:浅 ...
- 关于Java程序流程控制的整理(未完善)
- iOS 问答时间
runloop 的 model作用是什么? 答案: model 主要是用来指定事件在运行循环中的优先级,分为: NSDefaultRunLoopMode(kCFRunLoopDefaultMode): ...
- 2012年蓝桥杯省赛A组c++第1题(xy迭代增殖)
/* 微生物增殖 题目: 假设有两种微生物 X 和 Y X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍). 一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分 ...
- 苹果审核被拒,Guideline 1.1.6 - Safety - Objectionable Content;Guideline 3.1.1 - Business - Payments - In-App Purchase
Guideline 1.1.6 - Safety - Objectionable Content Thank you for your resubmission. We noticed that yo ...
- charles4.2下载与破解方法以及配置https
Charles的使用方法 Charles下载地址 地址:https://www.charlesproxy.com/latest-release/download.do 2. Charles破解 破解地 ...
- 在RAC执行相关操作发生ora-01031:insufficient privileges解决方法
grid用户下 寻找命令的路径 如which crsctl su - root用户 然后根据找到的路径去执行命令 如 /u01/app/oracle/product/11.2.0/db_1/bin/c ...
- Mysql 数据库几种引擎的区别比较
· MyISAM:默认的MySQL插件式存储引擎,它是在Web.数据仓储和其他应用环境下最常使用的存储引擎之一.注意,通过更改STORAGE_ENGINE配置变量,能够方便地更改MySQL服务器的默认 ...