▄︻┻┳═一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方法里给当前线程赋值。

  1. public abstract class HandlerBase : IHttpHandler
  2. {
  3. protected readonly LogHelperUtil _LogHelperUtil;
  4.  
  5. public void ProcessRequest(HttpContext context)
  6. {
  7. context.Response.ContentType = "application/json";
  8.  
  9. Thread.CurrentThread.Name = string.Format("[{0}_{1:HHmmssfff}_{2}]", this.GetType().Name, DateTime.Now, Guid.NewGuid().ToString().Replace("-", "").Substring(, ).ToUpper());
  10. _LogHelperUtil = new LogHelperUtil();
  11.  
  12. ... ...
  13.  
  14. }
  15. }

巧用CurrentThread.Name来统一标识日志记录(完结篇)的更多相关文章

  1. 巧用CurrentThread.Name来统一标识日志记录(java-logback篇)

    ▄︻┻┳═一Agenda: ▄︻┻┳═一巧用CurrentThread.Name来统一标识日志记录 ▄︻┻┳═一巧用CurrentThread.Name来统一标识日志记录(续) ▄︻┻┳═一巧用Cur ...

  2. 巧用CurrentThread.Name来统一标识日志记录(续)

    ▄︻┻┳═一Agenda: ▄︻┻┳═一巧用CurrentThread.Name来统一标识日志记录 ▄︻┻┳═一巧用CurrentThread.Name来统一标识日志记录(续) ▄︻┻┳═一巧用Cur ...

  3. 巧用CurrentThread.Name来统一标识日志记录

    ▄︻┻┳═一Agenda: ▄︻┻┳═一巧用CurrentThread.Name来统一标识日志记录 ▄︻┻┳═一巧用CurrentThread.Name来统一标识日志记录(续) ▄︻┻┳═一巧用Cur ...

  4. 【数据库】通过触发器实现审计日志记录-demo篇

      触发器实现审计日志记录(记录增.删.改) #创建测试表 CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, ...

  5. slf4j+log4j在Java中实现日志记录

    小Alan今天来跟大家聊聊开发中既简单又常用但必不可少的一样东西,那是什么呢?那就是日志记录,日志输出,日志保存. 后面就统一用日志记录四个字来形容啦. 日志记录是项目的开发中必不可少的一个环节,特别 ...

  6. 用slf4j统一管理日志总结

    用slf4j统一管理日志总结 参考网页:http://www.slf4j.org/ 一.使用slf4j统一管理并配置统一使用log4j日志 使用的jar:(slf4j-api-1.7.5.jar,jc ...

  7. Flunetd 用于统一日志记录层的开源数据收集器

    传统的日志查看方式 使用fluentd之后 一.介绍 Fluentd是一个开源的数据收集器,可以统一对数据收集和消费,以便更好地使用和理解数据. 几大特色: 使用JSON统一记录 简单灵活可插拔架构 ...

  8. Spring Boot AOP 扫盲,实现接口访问的统一日志记录

    AOP 是 Spring 体系中非常重要的两个概念之一(另外一个是 IoC),今天这篇文章就来带大家通过实战的方式,在编程猫 SpringBoot 项目中使用 AOP 技术为 controller 层 ...

  9. Taurus.MVC 微服务框架 入门开发教程:项目集成:5、统一的日志管理。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

随机推荐

  1. opencv中 int main(int argc,char* argv[])详解

    opencv中  int main(int argc,char* argv[])详解 argc是命令行总的参数个数     argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数     ...

  2. [No0000123]WPF DataGrid Columns Visibility的绑定

    场景:根据配置文件显示DataGrid中的某些列. 问题:Columns集合只是DataGrid的一个属性,这个集合在逻辑树或视觉树中是看不到的,也不会继承DataContext属性. 方法一:对Da ...

  3. React组件中的key

    React组件中的key 一.key的作用 react中的key属性,它是一个特殊的属性,它是出现不是给开发者用的(例如你为一个组件设置key之后不能获取组件的这个key props),而是给reac ...

  4. React子组件怎么改变父组件的state

    React子组件怎么改变父组件的state 1.父组件 class Father extends React.Component { construtor(props){ super(props); ...

  5. piano class 12

    1,不要记谱子,眼睛要一直看着谱子,手指凭感觉找琴键 2,弹的时候一定要按照谱子上标出来的指法弹奏,很重要 3,两只手要会跷跷板弹奏 4,八分音符,一般第二个会比第一个弱一点,但是要看自己感觉 5,慢 ...

  6. [security] security engine things

    1. luarock luarock 之于 lua,就好比 pip 之于 python https://luarocks.org/ 2.  lua的库 [root@base package]# ls ...

  7. Java代码中获取Json的key值

    测试json字符串: {"access_token":"hkbQl5o_l67dZ7_vJRATKBwTLk9Yj5QyMuOJThAr8Baj0xWf4wxW1p4ym ...

  8. 20165225《Java程序设计》第九周学习总结

    20165225<Java程序设计>第九周学习总结 1.视频与课本中的学习: 第十三章学习总结 URL类 URL对象包含三部分信息:协议.地址和资源 创建URL对象两种方法: public ...

  9. java Scanner和Random的Demo

    import java.util.Scanner;//导入包 import java.util.Random; public class ScannerDemo{ public static void ...

  10. 重读《深入理解Java虚拟机》七、探究Java内存模型

    1.计算机物理内存结构(物理内存结构决定了虚拟机内存结构) 由于处理器和主存储设备在运算速度上不上同一个数量级上,因此处理器和主存储器之间不得不增设一层高速缓存,将部分在主存储设备的运算放在高速缓存内 ...