log4j--动态打印日志文件到指定文件夹

news2024/11/29 18:11:07

文章目录

  • log4j--动态打印日志文件到指定文件夹
      • 1、添加Maven依赖
      • 2、配置文件 log4j.properties
      • 3、编写日志打印工具类 LogUtil
      • 4、工具类调用

log4j–动态打印日志文件到指定文件夹

1、添加Maven依赖

<!-- log4j日志相关坐标 -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.7.21</version>
		</dependency>
		<!-- 这里注意:如果是springBoot项目,不必再引入下边这个jar了,
        因为spring-boot-starter本身就已经引入这个jar了。以免造成jar包冲突 -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.21</version>
		</dependency>

2、配置文件 log4j.properties

log4j.rootLogger = debug,stdout,file

### 输出到控制台 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern =  %d{ABSOLUTE} %5p %c{1}:%L - %m%n

### 输出到日志文件 ###
log4j.appender.file = org.apache.log4j.DailyRollingFileAppender

###设置DatePattern,当天日志保存到log.log文件,前一天的日志文件名将被修改为log.log + _yyyy-MM-dd.log
log4j.appender.file.File =D/logs/log.log
log4j.appender.file.DatePattern = '_'yyyy-MM-dd'.log'
log4j.appender.file.Append = true

## 输出DEBUG级别以上的日志
log4j.appender.file.Threshold = DEBUG
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

3、编写日志打印工具类 LogUtil

package com.example.loginfo;


import org.apache.log4j.DailyRollingFileAppender;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;

import java.io.File;


public class LogUtil {

    private static Logger logger;
    private static String filepath;

    public static void setLog(String path) {      //path:日志保存路径
        filepath = path;
        new File(filepath).mkdir();  //创建文件夹
    }

    public static void infoMsg(String filename, String msg) {       //filename:生成日志的文件名  msg:日志信息
        logger = Logger.getLogger("_" + filename);
        DailyRollingFileAppender appender = new DailyRollingFileAppender();
        appender.setFile(filepath + "/" + filename + ".log");
        appender.setDatePattern("'.'yyyy-MM-dd");
        PatternLayout layout = new PatternLayout("%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS}%c %m%n");
        appender.setLayout(layout);
        appender.setAppend(true);
        appender.activateOptions();
        logger.addAppender(appender);
        logger.setAdditivity(false);
        logger.setLevel(Level.INFO);
        logger.info(msg);
        appender.close();
    }

    public Logger getLogger() {
        return logger;
    }
}

4、工具类调用

package com.example.loginfo;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

@RestController
public class LogController {
    
    Logger logger = LoggerFactory.getLogger(LogController.class);

    @GetMapping(value = "/log")
    public void testLog() {
        LogUtil.setLog("E:\\home\\cuiyudong");
        List<Object> objects = new ArrayList<>();
        objects.add("FHIUFWIEU");
        objects.add("DASD");
        objects.add("FHIUCASFFGFWIEU");

        LogUtil.infoMsg("LogController日至信息:",objects.toString());
    }
}

测试结果:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/768631.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无虚拟 DOM 版 Vue 进行到哪一步了?

前言 就在一年前的 Vue Conf 2022&#xff0c;尤雨溪向大家分享了一个非常令人期待的新模式&#xff1a;无虚拟 DOM 模式&#xff01; 我看了回放之后非常兴奋&#xff0c;感觉这是个非常牛逼的新 feature&#xff0c;鉴于可能会有部分人还不知道或者还没听过什么是 Vue 无虚…

哈佛“聘请”AI担任导师,主讲教授:别全信它的,学生应“批判性地思考”

就在人们为AI聊天机器人的利弊争论不休时&#xff0c;哈佛宣布了一个重磅决定&#xff1a;将利用类似ChatGPT的聊天机器人来帮助授课了。 负责的还是计算机系的旗舰项目 —— 计算机科学导论&#xff0c;也就是著名的 CS50。借助机器人导师&#xff0c;哈佛的 CS50 项目将拥有…

Python、Selenium实现问卷星自动填写(内含适配个人问卷的方法)

&#x1f9d1;‍&#x1f4bb;作者名称&#xff1a;DaenCode &#x1f3a4;作者简介&#xff1a;啥技术都喜欢捣鼓捣鼓&#xff0c;喜欢分享技术、经验、生活。 &#x1f60e;人生感悟&#xff1a;尝尽人生百味&#xff0c;方知世间冷暖。 &#x1f4d6;所属专栏&#xff1a;Py…

有哪些好用的远程传输大文件的软件

随着网络技术的日益进步和普及&#xff0c;大文件远程传输已经成为了人们生活和工作中必不可少的一部分。然而&#xff0c;在远程传输大文件的过程中&#xff0c;经常会遇到传输速度慢、容易受到干扰等问题&#xff0c;因此需要一款高效、稳定、安全的大文件远程传输软件来解决…

CCF真题练习:202209-1如此编码

题目背景 某次测验后&#xff0c;顿顿老师在黑板上留下了一串数字 23333 便飘然而去。凝望着这个神秘数字&#xff0c;小 P 同学不禁陷入了沉思…… 题目描述 已知某次测验包含 n 道单项选择题&#xff0c;其中第 i 题&#xff08;1≤i≤n&#xff09;有 个选项&#xff0c;…

【Vue 面试题10道】我好像之前想过要写,不过之前JavaScript面试题比较多,就暂时略过了,这些应该几乎把常问的都包括了

博主&#xff1a;_LJaXi Or 東方幻想郷 专栏&#xff1a; 前端面试题 开发工具&#xff1a;Vs Code 本题针对 Vue2 这些几乎把常用的都包括了&#xff0c;问别的就没意思了&#xff0c;毕竟工作拧螺丝嘛 我都好久不用Vue了&#xff0c;不过用了React再回看Vue感觉好简单啊… 其…

数据库性能优化中的查询优化

数据库性能优化中的查询优化 概述 在数据库应用中&#xff0c;查询操作是最常见的操作之一。查询优化是数据库性能优化的关键一环&#xff0c;通过对查询语句和查询执行计划的优化&#xff0c;可以显著提高数据库系统的性能和效率。本文将介绍查询优化的相关知识&#xff0c;…

结构型模式 - 代理模式

概述 由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时&#xff0c;访问对象不适合或者不能直接引用目标对象&#xff0c;代理对象作为访问对象和目标对象之间的中介。 Java中的代理按照代理类生成时机不同又分为静态代理和动态代理。静态代理代理类在编译期…

Docker 基础知识解析:容器与传统虚拟化对比:资源利用、启动时间、隔离性和部署效率

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

Vscode配置grpc+c#+proto

首先是环境配置&#xff0c;用的dotnet5.0的sdk&#xff0c;所以Vscode的C#插件版本要选择1.24&#xff0c;然后需要配置C# Snippets、NuGget Package Manager、vscode-proto3、vscode-solution-extension&#xff08;可选&#xff09;。 以vscode-solution-extension为例新建A…

【大数据之Hive】二十四、HQL语法优化之任务并行度

1 优化说明 Hive的计算任务由MapReduce完成&#xff0c;并行度调整分为Map端和Reduce端。 1.1 Map端并行度 Map端的并行度及Map的个数&#xff0c;由输入文件的切片数决定&#xff0c;一般情况下Map端并行度不需要手动调整。   在特殊情况下&#xff08;查询的表中存在大量小…

大数据学习03-Hive分布式集群部部署

系统环境&#xff1a;centos7 软件版本&#xff1a;jdk1.8、zookeeper3.4.8、hadoop2.8.5、hive1.1.0 一、下载安装 下载hive安装包&#xff0c;上传到linux服务器上&#xff0c; 解压安装包 tar -zxvf apache-hive-1.1.0-bin.tar.gz -C /home/local/重命名文件 mv apache-…

手机VPN的连接方法分享

1、首先在手机屏幕左右的滑动,找到手机的设置图标。 2、在打开的小米手机设置页面中点击“更多连接方式”的菜单项。 3、然后在打开的更多连接方式页面中点击VPN的菜单项。 4、在打开的VPN设置页面中点击“添加VPN”的按钮。 5、在打开的添加VPN的页面中输入VPN的信息后点击右…

Element-UI 实现动态增加多个不同类型的输入框并校验(双重v-for表单验证)

文章目录 前言定义表单格式表单渲染和验证扩展 前言 在做复杂的动态表单&#xff0c;实现业务动态变动&#xff0c;比如有一条需要动态添加的el-form-item中包含了多个输入框&#xff0c;并实现表单验证&#xff0c;但在element-ui组件库中给出的表单校验中没有这样的格式&…

简析三相电能预付费控制系统的设计与产品选型

摘要&#xff1a;介绍了一种电能预付费系统&#xff0c;主要用于三相动力用户。采用预付费控制器终端和电能表分离的方式&#xff0c;从原有电表读取相关数据用于比较&#xff0c;在尽量少改动原有接线的情况下安装预付费控制系统。采用安全性和稳定性高的RFID卡&#xff0c;数…

真正的理解WPF中的TemplatedParent

童鞋们在WPF中经常看到 TemplatedParent ,或者经常看到下面的用法: {Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content} 是不是看的一脸蒙圈? 先看官方文档: 意思是 和这个控件的 模板上的 父亲,如果这个控件不是模板创建的,那么这个值就…

Servlet 会话跟踪基础

文章目录 前言Cookie实例Cookie缺点Cookie案例代码 SessionSession的创建与销毁Session的创建Session的销毁 Session和Cookie的区别不同联系 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 在Web应用程序中&#xff0c;会话跟踪是一种技术&#xff0c;…

vue+element-ui通用后台管理系统(适合新手)

vueelement-ui通用后台管理系统&#xff08;适合新手&#xff09; 1、使用到的技术 使用vue2element-uiaxiosjs-cookielessecharts实现的一个简易的通用后台管理系统&#xff0c;具有很强的可扩展性&#xff0c;修改简单&#xff0c;只要有点前端基础就能看懂&#xff1b; 2…

汇编 -20230718

一. 练习&#xff1a; 1. 1-100的和 .text .globl _start_start:mov r0, #0 存放结果mov r1, #0 存放当前数mov r2, #100 结束条件的数addFun:add r1, r1, #1add r0, r0, r1cmp r1, r2bne addFunstop:b stop.end结果展示&#xff1a;

将DAST集成到CI/CD管道中的优势和实施步骤

在当今快速发展的网络环境中&#xff0c;维护Web应用程序的安全更加必要。由于漏洞的出现速度比以往任何时候都要快&#xff0c;将动态应用程序安全测试&#xff08;DAST&#xff09;集成到持续集成/持续部署&#xff08;CI/CD&#xff09;管道中成为改变游戏规则的因素&#x…