log4j 日志书写格式_springmvc+log4j操作日志记录,详细配置

论坛 期权论坛 脚本     
已经匿名di用户   2022-5-29 19:35   998   0

没有接触过的,先了解一下:log4j教程

部分内容来:log4j教程 感谢!

需要导入包:

log包:log4j-12.17.jar

第一步:web.xml配置

log4jConfigLocation

/WEB-INF/log4j.xml

controller

controller-log

loggingLevel

info

org.springframework.web.util.Log4jConfigListener

第二步log4j.xml配置

(配置文件可以有两种方式,一种是xml,一种是properties。个人比较喜欢xml,一目了然)

先讲解一下核心对象:

logger对象: Logger对象负责捕获日志信息及它们存储在一个空间的层次结构。

Appender对象:下位层提供Appender对象。Appender对象负责发布日志信息,以不同的首选目的地,如数据库,文件,控制台,UNIX系统日志等。

layout对象: 该层提供其用于格式化不同风格的日志信息的对象。布局层提供支持Appender对象到发布日志信息之前。

打个比方:logger是个情报站,负责收集他 所在地方(用name="xxx包"指定)下的所有信息。appender是发送出去的方式,如写信(FileAppender)、电报(SMTPAppender)等多种。layout就是发送内容以什么格式书写,如自定义格式(PatternLayout),html(HTMLLayout)格式。

class="org.apache.log4j.DailyRollingFileAppender">

class="org.apache.log4j.DailyRollingFileAppender">

运行就能看到common-default.log里面有操作日志

自己输出日志:

我controller包下某各类中:

package com.wzw.controller;

import org.apache.logging.log4j.LogManager;

import org.apache.logging.log4j.Logger;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.ExceptionHandler;

import org.springframework.web.bind.annotation.RequestMapping;

@Controller

@RequestMapping("/account")

public class AccountController {

private static Logger logger =LoggerFactory.getLogger(AccountController.class);

@ResponseBody

@RequestMapping("/login")

public String login(HttpSession session){

logger.info("请求登录");

logger.debug("debug");

logger.warn("warn");

}

}

访问这个controller,就会记录日志,因为有log4j中有两个logger配置记录controller包下的日志,所以输出到两个logger下(输出方式)。

appender选项:

AppenderSkeleton

AsyncAppender

ConsoleAppender

DailyRollingFileAppender

ExternallyRolledFileAppender

FileAppender

JDBCAppender

JMSAppender

LF5Appender

NTEventLogAppender

NullAppender

RollingFileAppender

SMTPAppender

SocketAppender

SocketHubAppender

SyslogAppender

TelnetAppender

WriterAppender

layout选项:

DateLayout

HTMLLayout

PatternLayout

SimpleLayout

XMLLayout

模式转换字符:

下表说明了以上模式使用的字符和所有其他字符,可以在自定义模式中使用:

转换字符

表示的意思

c

用于输出的记录事件的类别。例如,对于类别名称"a.b.c" 模式 %c{2} 会输出 "b.c"

C

用于输出呼叫者发出日志请求的完全限定类名。例如,对于类名 "org.apache.xyz.SomeClass", 模式 %C{1} 会输出 "SomeClass".

d

用于输出的记录事件的日期。例如, %d{HH:mm:ss,SSS} 或 %d{dd MMM yyyy HH:mm:ss,SSS}.

F

用于输出被发出日志记录请求,其中的文件名

l

用于将产生的日志事件调用者输出位置信息

L

用于输出从被发出日志记录请求的行号

m

用于输出使用日志事件相关联的应用程序提供的消息

M

用于输出发出日志请求所在的方法名称

n

输出平台相关的行分隔符或文字

p

用于输出的记录事件的优先级

r

用于输出毫秒从布局的结构经过直到创建日志记录事件的数目

t

用于输出生成的日志记录事件的线程的名称

x

用于与产生该日志事件的线程相关联输出的NDC(嵌套诊断上下文)

X

在X转换字符后面是键为的MDC。例如 X{clientIP} 将打印存储在MDC对键clientIP的信息

%

文字百分号 %%将打印%标志

格式修饰符:

默认情况下,相关资料原样输出。然而,随着格式修饰符的帮助下,可以改变最小字段宽度,最大字段宽度和对齐。

下表涵盖了各种各样的修饰符的情况:

Format modifier

left justify

minimum width

maximum width

注释

%20c

false

20

none

用空格左垫,如果类别名称少于20个字符长

%-20c

true

20

none

用空格右垫,如果类别名称少于20个字符长

%.30c

NA

none

30

从开始截断,如果类别名称超过30个字符长

%20.30c

false

20

30

用空格左侧垫,如果类别名称短于20个字符。但是,如果类别名称长度超过30个字符,那么从开始截断。

%-20.30c

true

20

30

用空格右侧垫,如果类别名称短于20个字符。但是,如果类别名称长度超过30个字符,那么从开始截断。

Winform开发框架之权限管理系统改进的经验总结(4)-一行代码实现表操作日志记录

在前面介绍了几篇关于我的权限系统改进的一些经验总结,本篇继续这一系列主体,介绍如何一行代码实现重要表的操作日志记录.我们知道,在很多业务系统里面,数据是很敏感的,特别对于一些增加.修改.删除等关键的操 ...

微软企业库5.0 学习之路——第九步、使用PolicyInjection模块进行AOP—PART4——建立自定义Call Handler实现用户操作日志记录

在前面的Part3中, 我介绍Policy Injection模块中内置的Call Handler的使用方法,今天则继续介绍Call Handler——Custom Call Handler,通过建立 ...

16.Linux配置环境变量和日志history和Terminal颜色和用户(IP)操作日志记录

$ vim /etc/profile #####################环境变量################################# export TZ='Asia/Shangh ...

springMVC开启声明式事务实现操作日志记录

第一步.在applicationContext-mvc.xml开启AOP注解扫描 第二步.创建增强类,实现日志记录 @Component ...

IT第二十天 - 面向对象编程思想、抽象类、异常处理、程序操作日志记录、本周总结 ★★★

IT第二十天 上午 面向对象编程思想 1.组装电脑的设计: (1)电脑的组成:显示器+机箱 (2)机箱的组成:电源+主板+硬盘 (3)主板所包含的部件:cpu+内存+PCI接口+usb接口 (4)PC ...

springAOP实现操作日志记录,并记录请求参数与编辑前后字段的具体改变

本文为博主原创,未经允许不得转载: 在项目开发已经完成多半的情况下,需要开发进行操作日志功能的开发,由于操作的重要性,需要记录下操作前的参数和请求时的参数, 在网上找了很多,没找到可行的方法.由于操作 ...

Yii2如何添加sql日志记录的配置信息

在使用Yii2框架的时候,常常会出现没有sql日志记录的问题.在代码里一句一句的打印sql语句也不现实.所以就要用文件记录起来. 在 config/web.php 里面的 log配置中增加如下配置 [ ...

.NetCore中使用AspectCore、ExceptionLess 实现AOP操作日志记录

结合前面封装的ExceptionLess,接下来使用 AspectCore 实现AOP日志处理 nuget导入AspectCore.Core .AspectCore.Extensions.Depend ...

Spring Boot分布式系统实践【基础模块构建3.3】注解轻松实现操作日志记录

日志注解 前言 spring切面的编程,spring中事物处理.日志记录常常与pointcut相结合 * * Pointcut 是指那些方法需要被执行"AOP",是由"P ...

随机推荐

给宏基装WIN8.1系统之问题与解决方法(原创)

1.采用老毛桃U盘PE进入笔记本: 2.备份桌面文件以防丢失: 3.将下载好的Win8操作系统镜像加载到虚拟光驱,最好把操作系统拷贝到笔记本硬盘上,不然可能会出现意想不到的错误: 4.打开老毛桃桌面安 ...

[shell编程]初识sed和gawk

一.sed编辑器 shell脚本最常见的用途就是处理文本文件,sed和gawk能够极大的简化需要进行的数据处理任务.sed编辑器是流编辑器,跟普通交互式文本编辑器(如vim)不同.流编辑器 ...

转: 如何用linux命令修改linux主机ip网关子网掩码

linux一般使用ifconfig命令修改linux主机的ip.网关或子网掩码. 1.命令格式: ifconfig [网络设备] [参数] 2.命令功能: ifconfig 命令用来查看和配置网络设备 ...

java并发4-单例设计方法

单例的设计方式: 第一种:非延迟加载单例类 public class Singleton { private Singleton() {} private static final Singleton ...

UVA - 1103Ancient Messages(dfs)

UVA - 1103Ancient Messages In order to understand early civilizations, archaeologists often study te ...

reflow和repaint

Web页面运行在各种各样的浏览器当中,浏览器载入.渲染页面的速度直接影响着用户体验 简单地说,页面渲染就是浏览器将html代码根据CSS定义的规则显示在浏览器窗口中的这个过程.先来大致了解一下浏览器都 ...

SourceTree 将本地已有的git项目推送到远程git仓库

1.在远程git仓库创建对应的项目: 2.用命令行生成本地的ssh key; 3.把公钥粘贴远程仓库对应的位置: 4.SourceTree 设置远程仓库的地址: 5.把本地对应的分支推送到远程仓库: ...

Xpath定位总结

先贴上练习xpath的地址:http://www.w3school.com.cn/example/xmle/books.xml 或则也可以使用百度进行练习 1.相对定位与绝对定位 //表示相对定位,对 ...

uboot - the bootloader of linux

[转载]https://blog.csdn.net/kernel_yx/article/details/53045424 最近一段时间一直在做uboot移植相关的工作,需要将uboot-2016-7移 ...

用系统默认mail服务实现邮件发送

用系统默认mail服务实现邮件发送 1.操作步骤 第一步:设备服务器发送邮件要用的,邮箱地址,账号密码 编辑/etc/mail.rc vim /etc/mail.rc 在文件的结尾追加,账号信息配置 ...

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP