Java日志

Qt教程(1) : 用Log4Qt自定义日志系统 ​日志系统可以记录软件系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件和异常。在程序调试过程中,需要通过日志来找出问题所在。 使用一个好的日志框架可以事半功倍,C++的日志框架有很多,常用的框架如下: log4cxx:Java 社区著名的 Log4j 的 C++ 移植版,用于为 C++ 程序提供日志功能,以便开发者对目标程序进行调试和审计。 log4cplus:一个简单易用的 C++ 日志记录 API,它提供了对日志管理和配置的线程安全、灵活和任意粒度控制(... 阅读详情
Java中的几类日志
  1. 接口型:只定义规范,不提供具体实现,面向接口编程的思想。
    • J.C.L
    • SLF4J
  2. 实现型:提供了具体的日志收集/管理功能。
    • Log4j
    • J.U.L
    • Logback
    • Log4j2
  3. 桥接类:多种日志框架混用时,需要桥接类完成转换,统一成一种进行输出。
    • slf4j-jdk14
    • slf4j-log4j12
    • log4j-slf4j-impl
    • slf4j-jcl
    • …
发展历史
  1. 最早是Log4j。
  2. 而后jdk1.4之后提供了J.U.L。
  3. 但是两种框架混用出现混乱,Apache就推出了J.C.L定义了一套日志接口,支持运行时动态加载组件。
  4. Log4j的开发者Ceki Gülcü离开Apache后,认为J.C.L设计得不好,于是开发了Slf4j作为一套标准接口。
  5. 他也顺便开发了Slf4j的默认实现Logback,在功能完整度和性能上超越所有日志实现框架。
  6. 2012年Apache重写了Log4j,实现了Log4j2。功能上具有Logback的全部功能。
Log4j

配置:

### 设置级别和目的地(这里多个目的地) ###
log4j.rootLogger = DEBUG,CONSOLE
### 这里的me是包,也就是在这个包记录日志时,是只记录debug及以上级别的日志
log4j.logger.me=DEBUG
### 输出到控制台 ###
log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target = System.out
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern =  %d{ABSOLUTE} %5p %c{1}:%L - %m%n 

配置说明:

%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%r: 输出自应用启动到输出该log信息耗费的毫秒数
%c: 输出日志信息所属的类目,通常就是所在类的全名
%t: 输出产生该日志事件的线程名
%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
%%: 输出一个”%”字符
%F: 输出日志消息产生时所在的文件名称
%L: 输出代码中的行号
%m: 输出代码中指定的消息,产生的日志具体信息
%n: 输出一个回车换行符,Windows平台为”\r\n”,Unix平台为”\n”输出日志信息换行
可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:
1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。
2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,”-”号指定左对齐。
3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。
4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边交远销出的字符截掉。
  1. 配置日志级别和输出目的地名称:
    ​ log4j.rootLogger = [ level ] , appenderName, appenderName, …
    ​ - level:是log4j的日志级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。
    ​ - appenderName:就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。

  2. 配置日志输出目的地Appender:

    log4j.appender.appenderName = fully.qualified.name.of.appender.class
    
    log4j.appender.appenderName.option1 = value1
    …
    log4j.appender.appenderName.option = valueN
    其中,Log4j提供的appender有以下几种:
    org.apache.log4j.ConsoleAppender(控制台),
    org.apache.log4j.FileAppender(文件),
    org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件,可以设置周期),
    org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
    org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
    
  3. 针对Appender的配置:…

    (1).ConsoleAppender选项

    Threshold=WARN:指定日志消息的输出最低层次。

    ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。

    Target=System.err:默认情况下是:System.out,指定输出控制台

    (2).FileAppender 选项

    Threshold=WARN:指定日志消息的输出最低层次。

    ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。

    File=mylog.txt:指定消息输出到mylog.txt文件。

    Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。

    (3).DailyRollingFileAppender 选项

    Threshold=WARN:指定日志消息的输出最低层次。

    ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。

    File=mylog.txt:指定消息输出到mylog.txt文件。

    Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。

    DatePattern=’.’yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下:

    • ’.’yyyy-MM: 每月
    • ’.’yyyy-ww: 每周
    • ’.’yyyy-MM-dd: 每天
    • ’.’yyyy-MM-dd-a: 每天两次
    • ’.’yyyy-MM-dd-HH: 每小时
    • ’.’yyyy-MM-dd-HH-mm: 每分钟
    (4).RollingFileAppender 选项

    Threshold=WARN:指定日志消息的输出最低层次。

    ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。

    File=mylog.txt:指定消息输出到mylog.txt文件。

    Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。

    MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件

    MaxBackupIndex=2:指定可以产生的滚动文件的最大数。

  4. 配置日志信息的布局:

    log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
    log4j.appender.appenderName.layout.option1 = value1
    …
    log4j.appender.appenderName.layout.option = valueN
    
    #其中,Log4j提供的layout有以下几种:
    org.apache.log4j.HTMLLayout(以HTML表格形式布局),
    org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
    org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
    org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
    

具体使用可以参考这篇文章

6、Qt—Log4Qt使用小记1 Log4Qt是使用Trolltech Qt Framework的Apache Software Foundation Log4j包的C ++端口。它旨在供开源和商业Qt项目使用。所以 Log4Qt 是Apache Log4J 的Qt移植版,Log4Qt主要是用来记录日志(有助于程序调试)。Logger提供日志记录服务,可以有多个Logger存在,每个有它们自己的名字。Logger间存在隶属关系,有一个Logger称为根Logger。Appender。 阅读详情

相关推荐

Java——日志解析

前言 我们在编写代码时,都知道在关键算法,逻辑性较强的地方添加注释。一来提高了代码的可维护性。二来让代码有了自可读性。如果我们把注释理解为静态的自可读性。那么,程序在运行时,我们如何才能知道程序的实际运行路径呢?这就是今天的主角--日志! 为什么要打日志? 有很多朋友,不太喜欢打日志。好几百,甚至上千行的代码。啪,啪,啪的全写完!自信满满,一行日志也没打。联调,测试,上线都没问题。系统运行一...

qq_36860032的博客 1307

log4Qt史上最详细介绍、编译和使用

Log4Qt是使用Trolltech Qt Framework的Apache Software Foundation Log4j包的C ++端口。它旨在供开源和商业Qt项目使用。所以 Log4Qt 是Apache Log4J 的Qt移植版,所以看Log4J的资料应该是最直接有效的(因为 Log4Qt的直接资料太少了)。Log4Qt主要是用来记录日志(有助于程序调试)。1、Logger提供日志记录服务,可以有多个Logger存在,每个有它们自己的名字。

波风水门 8980

Log4Qt 基本介绍

在项目开发过程中,离不开代码的调试、Bug 的追踪,这时日志便显得尤为重要。

青春不老,奋斗不止! 2247

Log4Qt的基本使用

1、下载 Log4Qt官网下载 GitHub(推荐) 2、加载到项目 可以用源码自行编译成库使用,或直接在项目内添加源码。 1. 解压log4qt到目标文件夹,如D:\Qt\下; 2. qt项目的pro文件中加入一行:include(D:\Qt\log4qt\src\log4qt\log4qt.pri), pri文件会将需要的h文件和cpp文件加入到qt项目中; 3、 简单使用 #inclu...

左霖风的博客 1万+

全志 mipi屏幕和触摸驱动调试记录

mipi屏幕与触摸调试记录

u011996684的博客 3218

LSCM最小二乘保角参数化

LSCM最小二乘保角参数化 最小二乘思想 已知一组点的数据(x,y) x x1x_1x1​ x2x_2x2​ x3x_3x3​ … xnx_nxn​ y y1y_1y1​ y2y_2y2​ y3y_3y3​ … yny_nyn​ 可以近似为线性关系 y=ax+by=ax+by=ax+b ,目标为确定常数 aaa , bbb ; 解法:找到 aaa , bbb ,使得所有 yiy_iyi​ 与 axi+bax_i+baxi​+b 偏差的平方和 Q=∑i=1n(yi−axi−b)2 Q=\s

weixin_49732532的博客 4252

java日志使用

java日志:日志就是记录程序的运行轨迹,方便查找关键信息,也方便快速定位解决问题。 常用的日志框架:Log4j、Slf4j 、Logback 。 在JDK 1.3及以前,Java打日志依赖System.out.println(), System.err.println()或者e.printStackTrace(),Debug日志被写到STDOUT流,错误日志被写到STDERR流。这样打日志...

Object的博客 3万+

VS2015+Qt+OpenCV+open62541开发过程(05_VS2015中使用OPCUA open62541通过Kepware读写PLC数据)

此外还需要所需lib包:WS2_32.Lib(opcua通讯用到的库,opcua使用socket通讯,需使用此库),添加#pragma comment(lib,"ws2_32.lib") 语句,有的文章说需要添加ws2_32.lib文件或ws2_32.dll到项目资源中,貌似影响不大。2.在VS中选择x64平台会报错,选择x86平台可以用,应该是ws2_32.lib相关的库不支持64位,目前没有解决,继续后面的实验,看看用Qt后是否可以解决。6.VS中建立的变量,与读取的OPC点数据类型注意对应。

zzh17的博客 1862

Java 日志从入门到实战

日志和异常处理结合得当的话,会给项目维护带来非常大的价值。 **日志:**就是介绍一个过程和经历的详细记录。 **项目日志:**就是项目开发过程的详细记录,一般由项目经理记录。 **代码里的日志:**就是程序员记录某个开发过程的详细情况,这是项目里每个程序员需要做的工作。 代码里的日志在项目中扮演着非常重要的角色,日志记录的详细程度决定系统是否容易维护,Java 项目中日志记录的框架有很多,在...

只有变秃 才能变强 5392

基于RK3588与Gstreamer的端侧实时视频流AI推理系统构建

本文详细介绍了基于RK3588芯片与Gstreamer框架构建端侧实时视频流AI推理系统的完整方案。通过硬件选型、环境配置、OpenCV编译优化、视频流处理实战及模型部署等关键环节的深入解析,展示了如何利用RK3588的6TOPS NPU算力与Gstreamer的低延迟特性,实现工业质检、智能交通等场景下的高效边缘计算。特别针对RTSP推拉流优化、RKNN模型转换等核心技术难点提供了实用解决方案。

weixin_30516243的博客 381

ROS2实战:打造智能巡检机器人的关键技术与实现

本文详细介绍了基于ROS2和Navigation2构建智能巡检机器人的完整实战流程。通过设计主从协作的事件驱动架构,实现了机器人在已知地图中的自动导航、定点语音播报和环境图像采集功能。文章涵盖了从环境搭建、仿真配置到核心控制节点、语音服务与图像记录模块的代码实现,为开发者打造实用的自动巡检机器人提供了清晰的技术指南。

weixin_29031057的博客 222

Java日志总结

开发中,日志记录是不可或缺的一部分,应用日志的记录主要用于:记录操作轨迹数据、监控系统运行情况、系统故障定位问题,日志的重要性不言而喻,想要快速定位问题,日志分析是个重要的手段,Java也提供了多种日志框架来进行有效的日志管理。本文将探讨Java常用的日志框架以及使用案例。

zhangyifang_009的博客 1161

ADS基础教程22 - 有限元电磁仿真(FEM)

一、引言二、FEM操作过程1.新建Layout1.新建Layout2.EM设置3.设置Frequency plan4.设置Output plan5.设置Options6.设置网格频率7.仿真结果三、总结介绍了在ADS中如何进行FEM仿真过程。END!}}END!

XZ_ZC的博客 2579

Java日志简介及SpringBoot日志

Logback是log4j框架的作者开发的新一代日志框架,它效率更高、能够适应诸多的运行环境,同时天然支持SLF4J。官方网站http它当前分为下面下个模块其它两个模块的基础模块它是log4j的一个改良版本,同时它完整实现了slf4jAPI使你可以很方便地更换成其它日志系统如log4j或JDK1.4Logging与Servlet容器集成提供通过Http来访问日志的功能。...

逍遥人世欢 1610

S7-1200 G2移植旧版本S7-1200程序的具体方法示例

S7-1200 G2移植旧版本S7-1200程序的具体方法示例

Robot_PLC_HMI_Automation 1509

基于uniapp实现自定义日历页面、年份月份选择、动态日历渲染、日期标记及备忘录、无组件依赖、多端兼容

基于UniApp框架下自定义日历组件的完整实现方案,涵盖基础日历渲染、年月选择器集成、动态数据标记等核心功能。提供完整代码段,帮助开发者快速构建高性能、高定制化的日历模块,适用于日程管理、预订系统等场景。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 1万+

Java日志详解

日志的定义:程序执行过程中,记录程序运行的情况的信息日志的作用:Log日志,主要用于记录程序运行的情况,以便于程序在部署之后的排错调试等,也有利于将这些信息进行持久化(如果不将日志信息保存到文件或数据库,则信息便会丢失)。

刘皇叔说Java的博客 7180

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

java日志入门总结

日志可以用来定位问题、性能分析、运营监控、业务分析等。接下来,我将介绍如何在开发过程中有效地输出日志以及要注意哪些问题。

2025年写100篇文章 1465

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Java 日志

比如把信息保存到文件中这个方法的名字可以写为infoToFile,有个人为了偷懒,写成info2File,发现效果还挺好,一下就能分清两个单词,所以后续也就出现了用2代替To,4代替for,然后读的时候不读数字,还是原英文。日志文件的路径有些放到了C盘的路径下,可能C盘的权限比较高,IDEA是进不去的,所以可以改为权限较低的其他盘。输出结果,我这里只看到了控制台的日志信息,没有在硬盘下的目录中找到日志文件,也不知道为什么,不想找了。(2)FILE则表示日志信息输出到文件在,与此同时就需要指明文件的路径。

m0_46977298的博客 1492

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

java 日志类型_java日志类型

java日志系统可以大致分为三部分: 日志外观界面,桥接和日志框架实现.有许多种Java日志记录框架. 最简单的是Java附带的java.util.logging,最经典的是log4j. 后来,出现了一个性能比log4j好的logback. 其他日志框架则没有. 如何常用. 应用程序当然可以直接使用这些特定日志记录框架的API来满足日志输出要求,但是由于各种日志记录框架之间的API通常不兼容,因此...

weixin_33054847的博客 823

Java 日志规范

java 日志规范

wastingallthesetears的博客 3176

Java日志规范

转自:http://m.blog.youkuaiyun.com/article/details?id=44260759 Overview 一个在生产环境里运行的程序如果没有日志是很让维护者提心吊胆的,有太多杂乱又无意义的日志也是令人伤神。程序出现问题时候,从日志里如果发现不了问题可能的原因是很令人受挫的。本文想讨论的是如何在Java程序里写好日志。 一般来说日志分为两种:业务日志和异

summer的博客 2146

Java| Java日志

Java日志组件 Java 日志 API 由以下三个核心组件组成:Loggers:Logger 负责捕捉事件并将其发送给合适的 Appender。Appenders:也被称为 Handlers,负责将日志事件记录到目标位置。在将日志事件输出之前, Appenders 使用Layouts来对事件进行格式化处理。Layouts:也被称为 Formatters,它负责对日志事件中的数据进行转换和格式化。Layouts 决定了数据在一条日志记录中的最终形式。 当 Logger 记录一个事件时,它将事件转发给适当

YvesHe的专栏 535
上一篇: DataQL
下一篇: 数据库锁的知识
一只小小翠
博客等级 码龄9年 154粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值