`
soleghost
  • 浏览: 41875 次
  • 性别: Icon_minigender_1
  • 来自: 未知
社区版块
存档分类
最新评论

我们需要什么样的logger

阅读更多

在生产环境中,针对具体问题的追踪,没有debug,只有利用logger排查问题,这就要求我们打印logger,具体有哪些logger呢?

 

1.摘要日志

   同步service层摘要日志,打印调用服务,入参,执行时间,执行结果

   异步事件接收摘要日志,打印调用服务,入参,执行时间,执行结果

   dal层摘要日志

   intergration摘要日志

   摘要日志,一般由拦截器负责打印,和具体的业务解耦

2.性能日志

   针对系统中某种业务超过时间阀值,则打印出具体的执行步骤和执行时间,从而找到系统的性能瓶颈

   如:operatorA--900ms

            --A1--400ms

               --A11-300ms

               --A12-100ms

            --A2--300ms

            --A3--200ms

3.业务异常日志

   个人观点,凡是有if出现的地方,都需要打印具体的日志(当然要评估出具体的日志量和磁盘空间),以利于日后的问题排查。

   当然每个地方都要求打印业务异常日志,确实会导致工作量比较大,这时可以利用本地线程编程,在第一次进入系统时,生成一个唯一的key(time或者其他,只要保证唯一即可),通过封装,每次打印业务异常日志时,也把key打印出来,这样一个线程的调用,即可用key关联起来。出现问题时,即可用 grep key *log搜出所有线索!

 

4.系统错误日志

   针对由外围系统、db访问层导致的不可预测的错误,需要打印出日志

 

 

技术支持:

摘要日志--AOP技术

性能日志--基于本地线程的ThreadLocal和具体的打点,在每次打点时,写入ThreadLocal,在超出性能阀值时,将ThreadLocal中的打的点打印出。

业务异常日志和系统操作日志--需要一个异常拦截框架,比如

          try{

                do业务();

          }catch(业务自定义RuntimeException e){

               logger.warn("业务异常",e);

          }catch(Exception e){

               logger.warn("系统异常",e);

          }

 

 

 

 

分享到:
评论

相关推荐

    sql,建立连接数据库,写日志

    然后,我们创建了一个logger实例,并在执行SQL时使用它来记录信息和错误。 结合这两个概念,当我们在编程中执行数据库操作时,不仅可以通过连接数据库执行SQL查询,还可以记录查询的过程和结果,这对于调试和监控...

    怎样使用Python脚本日志功能

    首先,我们需要满足的第一个需求是为每个脚本创建单独的日志文件,并且文件名应基于脚本的名称。为了获取脚本的名称,我们可以使用`sys.argv[0]`来获取命令行执行的脚本的完整路径,然后通过`split()`方法分割路径并...

    Log4j日志体系结构

    我们在写日志的时候首先要获取logger,在每一个使用log4j的项目都有很多个地方要获取logger,这些logger是真实的被实例化的Logger对象,他们有可能被分散在无数不同的类中,日志体系结构讲的是这些logger对象是如何...

    c++ 打印log 日志到文件

    首先,我们需要理解日志的基本概念。日志通常包含程序运行过程中的信息,如错误信息、警告消息、调试数据等。在C++中,我们可以通过重定向`std::cout`或`std::cerr`到文件来实现基本的日志记录。然而,为了更高级的...

    用mysql做站点时怎样记录未知错误的发生

    首先,我们需要创建一个专门用于记录错误的日志文件。通常,我们选择文本格式的日志文件,例如"error.dat",因为这种格式易于阅读和分析。以下是一个简单的PHP示例,展示了如何在发生错误时将错误信息写入日志文件:...

    python日志输出----logging浅析与使用[参照].pdf

    日志级别决定了什么样的信息会被记录。DEBUG是最详细的级别,通常用于调试;INFO用于一般信息记录,比如程序的正常运行流程;WARNING表示遇到可能的问题但还能继续运行;ERROR表示程序无法继续执行的错误;而...

    Java如何自定义异常打印非堆栈信息详解

    二、为什么需要自定义异常打印非堆栈信息? 在Java中,默认的异常处理机制会将异常信息打印到控制台上,但是这些信息往往是不完整的,无法提供足够的信息来帮助我们定位和解决问题。因此,自定义异常打印非堆栈信息...

    黑框框设置不输出

    不过,这将关闭所有日志,包括系统和应用的日志,所以通常会为不同的logger设置不同的级别,如`log4j.logger.org.apache.catalina=OFF`来关闭Tomcat相关的日志。 3. **配置`catalina.sh`或`catalina.bat`**: 你还...

    logback文档

    首先,文档对Logback进行了基本介绍,包括什么是Logback、怎样构建Logback以及Logback的工作原理等。Logback的体系结构由Logger、Appender和Layout三个主要组件构成。Logger是记录日志的主体,Appender负责将日志...

    Python 实现日志同时输出到屏幕和文件

    最后,通过`logger.addHandler(handler)`将`FileHandler`添加到logger实例,使其开始记录日志。 通过这种方式,日志信息不仅会在屏幕上显示,还会被写入到指定的文件中,实现了日志的双重输出。这在实际开发中非常...

    怎样把图片copy

    根据提供的文件信息,我们可以分析并总结出以下几个关键的知识点: ### 1. Java Swing 图形用户界面编程 #### 1.1 Swing 组件介绍 - **JFrame**: 是Swing中的顶层容器,用来创建应用程序的主窗口。 - **JTextArea*...

    logging.jar包

    首先,我们要明确什么是"logging.jar"。这是一个Java库,封装了多种日志实现,如java.util.logging(也称为JUL),Log4j,Apache Commons Logging等,提供了一站式的日志解决方案。通过这个单一的jar包,开发者可以...

    Arthas线上应用诊断利器概述.pdf

    例如,使用 Arthas可以查看Mybatis mapper的logger配置,动态查看Mybatis具体执行的SQL语句。 3. 重新定义StringBuilder类的代码。 Arthas可以重新定义StringBuilder类的代码,例如,在StringBuilder#toString() ...

    java写webapi源码-Logging:使用各种记录器框架和Microsoft.Extensions.Logging.ILogger接口的

    应用程序起初似乎微不足道,直到我们遇到与异步代码执行相关的框架细节,这使得无法根据线程 id 关联日志条目 - 异步方法可能会切换线程在执行的不同阶段,因此如果不为每个日志条目提供某种日志条目相关性,就不...

    很实用的NLog配置分享

    2. <rules>:定义日志记录规则,它指定了什么样的日志信息应该被记录以及被记录到哪个目标。 3. <layout>:定义日志信息的格式,它由一系列变量和字符串组成,用于格式化输出的日志数据。 在提供的内容中,可以看到...

    树房子:样板房Koa应用

    树屋Treehouse是一款轻型的基于事件的...为什么选择树屋我们得到了...从头开始构建自己的服务器很有趣。 因此,如果您喜欢使用各种库并将它们拼接在一起,那么该库可能不适合您。 但是,也许您喜欢该库的设置方式,并

    LOG4J电子书下载

    #### 三、为什么要在项目中使用Log4j 在实际开发过程中,日志记录是一项非常重要的任务。无论是用于开发阶段的调试,还是运行时的问题追踪,日志都能发挥关键作用。然而,传统的日志记录方式(如直接使用`System....

    java http token请求代码实例

    首先,需要创建一个 `HttpURLConnection` 对象,然后设置请求的 URL、方法和参数。然后,使用 `disconnect()` 方法关闭连接。 知识点3:_Post 请求的实现 在 Java 中,使用 `PostMethod` 对象来实现 POST 请求。...

    thrift example

    在"thrift example"中,我们可以看到几个关键概念和技术: 1. **Thrift Server**:Thrift服务器是实现业务逻辑的地方,它使用Thrift编译器生成的代码来处理客户端请求。服务器可以基于多种协议和传输方式运行,例如...

Global site tag (gtag.js) - Google Analytics