log4j日志在java控制台输出,简单实用

2023-11-02

                                                    log4j日志在java控制台输出,简单实用

1、log4j输出有2中方式:第一种是将日志信息保存在一个文本当中;第二种是输出到控制台中。下面介绍第二种方式。

2、在控制台输出log4j日志信息,是开发项目中常用的也是比不可少的也是必须会的一个技术点。

3、2种log4j文件加载方式,以下代码可以直接运用在项目当中。理论东西就不多说了直接看代码。几个步骤就完成。

java QQ群:180258862

4、准备log4j-contrl.propertes 文件,其目录为src/log4j-contrl.propertes:

log4j.appender.encoding = UTF-8
log4j.rootLogger=INFO,CONSOLE,APPLOG,ERROR,ERRORLOG
#log4j.rootLogger=ERROR,ERRORLOG
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{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c %x - %m%n

log4j.appender.APPLOG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.APPLOG.Append=true
log4j.appender.APPLOG.DatePattern='_'yyyyMMdd'.log'
log4j.appender.APPLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.APPLOG.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c %x - %m%n
log4j.appender.APPLOG.File=/data1/logs/tomcat/sync/AppAccessLog

log4j.appender.ADMINLOG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ADMINLOG.Append=true
log4j.appender.ADMINLOG.DatePattern='_'yyyyMMdd'.log'
log4j.appender.ADMINLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.ADMINLOG.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c %x - %m%n
log4j.appender.ADMINLOG.File=/data1/logs/tomcat/sync/AdminAccessLog

log4j.appender.ERRORLOG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ERRORLOG.Threshold=ERROR
log4j.appender.ERRORLOG.Append=true
log4j.appender.ERRORLOG.DatePattern='_'yyyyMMdd'.log'
log4j.appender.ERRORLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.ERRORLOG.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c %x - %m%n
log4j.appender.ERRORLOG.File=/data1/logs/tomcat/sync/AppErrorLog

log4j.logger.com.ibatis = DEBUG  
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource = DEBUG  
log4j.logger.com.ibatis.common.jdbc.ScriptRunner = DEBUG  
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate = DEBUG  
log4j.logger.java.sql.Connection = DEBUG  
log4j.logger.java.sql.Statement = DEBUG  
log4j.logger.java.sql.PreparedStatement = DEBUG
log4j.logger.java.sql.ResultSet = DEBUG 


5、创建一个servlet来启动日志文件,当启动服务器时进行加载并初始化日志文件

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
/**
 * log4j控制台文件输出,初始化配置文件
 * @author Administrator
 *
 */
public class Log4jInit extends HttpServlet {

public void destroy() {
super.destroy(); 
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {}


public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {}

public void init() throws ServletException {
String prefix = getServletContext().getRealPath("/");
String file = getServletConfig().getInitParameter("log4j"); //是web.xml中的参数
if (file != null) {
PropertyConfigurator.configure(prefix + file);
}
Logger log = Logger.getLogger(Log4jInit.class);
log.info("Logg4j日志已经初始化。");
}
}

 6、在web.xml中配置servlet并初始化该servelt文件:

<servlet>
<servlet-name>Log4jInit</servlet-name>
<servlet-class>com.java.log.Log4jInit</servlet-class>
<init-param>
<param-name>log4j</param-name>
<param-value>WEB-INF/classes/log4j-contrl.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>Log4jInit</servlet-name>
<url-pattern>/log/logfj</url-pattern>
</servlet-mapping>

7、测试log4j日志(这里测试只能通过web形式访问在能输出日志,在main方法中貌似不行但是可以通过下面介绍的方法(序列9)可以):

 import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

public class Log4j extends HttpServlet {
   private static  final transient Logger log = Logger.getLogger(Log4j .class);

public void destroy() {
super.destroy();
}


public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}


public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
        
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
log.info("记录日志信息,将在控制台输出");
      log.error("可以记录错误信息,输出字体为控制");
out.flush();
out.close();
}
public void init() throws ServletException {

}
}

8、输出结果:

2013-05-01 14:08:55 INFO  [http-9090-1] com.java.md.KeyMDF  - 记录日志信息,将在控制台输出
2013-05-01 14:08:55 ERROR [http-9090-1] com.java.md.KeyMDF  - 可以记录错误信息,输出字体为控制


9、第二种方式加载log4j-contrl.propertes文件:

import org.apache.log4j.Logger;

import org.apache.log4j.PropertyConfigurator;

 public class TestLog4j {

private static  final transient Logger log = Logger.getLogger(TestLog4j .class);

 public static void main(String[] args)throws InvalidKeyException, IllegalBlockSizeException, NoSuchAlgorithmException, UnsupportedEncodingException, BadPaddingException, NoSuchPaddingException {

                  PropertyConfigurator.configure("src/log4j.properties");   
            log.info("记录日志信息,将在控制台输出");
   log.error("可以记录错误信息,输出字体为控制");
}

}






本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

log4j日志在java控制台输出,简单实用 的相关文章

  • vue脚手架实现子组件间通信

    效果图如下 原理 子组件间通过第三方实例化一个vue 再通过此vue的 emit 发射事件 与 on 事件监听 通过参数来进行数据传递 首先我们实例化一个vue bus js文件 import Vue from vue export def
  • phpMyAdmin安装及问题总结

    今天调试PHP数据库Mysql 在单位的电脑上安装phpMyAdmin数据库管理软件 本来是很简单的事 却出现了几个问题 1 无法载入mcrypt扩展 请检查PHP配置 2 配置文件现在需要绝密的短语密码 blowfish secret 3
  • np.argwhere()的用法

    np argwhere a Find the indices of array elements that are non zero grouped by element 返回非0的数组元组的索引 其中a是要索引数组的条件 返回数组中所有大
  • Opencv(C++)系列学习---读取视频文件和打开摄像头

    今天学习的这两个内容比较简单 话不多说 直接上代码 目录 1 读取视频文件 2 摄像头读取视频 1 读取视频文件 include
  • 2021爱分析·中国房企数字化实践报告

    报告编委 报告指导人 黄勇 爱分析 合伙人 首席分析师 报告执笔人 李晋文 爱分析 高级分析师 花小省 爱分析 高级分析师 任理 爱分析 分析师 外部专家 按姓氏拼音排序 高富成 越秀地产 数智发展中心数字化总监 何宛余 小库科技 创始人
  • P2P下载器(Linux下C++项目实战)

    P2P下载器 即点对点下载器 服务端与客户端 服务端共享文件列表 客户端配对相应服务端 下载所需要的文件 一 项目介绍 1 项目功能 搜索附近 局域网内 在线用户 此处不足 只能在局域网内获取 需要网络穿透技术获取别的网络 获取到在线用户列
  • git本地推到远仓

    1 git init 2 把文件添加到本地版本库中 git add 3 把文件提交到仓库 git commit m first commit 4 关联到远程库 git remote add origin 你的远程库地址 5 远程库与本地同步
  • Python中将异常写入日志文件

    如何将python中的异常写入日志文件 当我们想要把python中的异常报错进行获取并保存的时候 我们可以采用traceback模块 import traceback try num 1 0 except with open home ub
  • 昆明计算机一级考试培训,计算机一级证书

    一 课程概况 全国计算机等级考试是社会考试 就考试性质而言 它是一种重视应试人员对计算机和软件的实际运用能力的考试 考试分为四个等级 不同等级的内容不同 一级主要考核微型计算机基础知识和使用办公软件及因特网 Internet 的基本技能 一
  • 常用API之BigDecimal类的使用(学习Java第16天)

    目录 BigDecimal类的概述 BigDecimal类构造方法 BigDecimal类常用方法 除法保留三位小数代码实例 除法保留三位有效数字代码实例 乘法保留两位小数 乘法保留两位有效数字 BigDecimal类的概述 使用基本类型做
  • 再学C++(2)

    第二章 开始学习C 在C 中 每条完整的指令都称为语句 所有的语句都以分好结束 因此在输入代码时 请不要省略分号 函数头描述了函数与调用它的函数之间的接口 位于函数名前面的部分叫做函数返回类型 它描述的是从函数返回给调用它的函数的信息 函数
  • scala中:: , +:, :+, :::, +++的区别

    该方法被称为cons 意为构造 向队列的头部追加数据 创造新的列表 用法为 x list 其中x为加入到头部的元素 无论x是列表与否 它都只将成为新生成列表的第一个元素 也就是说新生成的列表长度为list的长度 1 btw x list等价
  • GoogLeNet网络模型

    目录 简介 GoogLeNet网络结构及其参数 网络结构 模型参数 特点 模型代码 训练模型 模型测试 简介 GoogleNet分类 网络是14年由 Google 团队提出 GoogLeNet是当年ImageNet挑战赛 ILSVRC14
  • post请求JSON数据写入到txt中

    首先在pro文件中添加 QT network h文件 ifndef MAINWINDOW H define MAINWINDOW H include
  • 华为云流水线CodeArts Pipeline怎么样?能实现哪些功能?

    华为云流水线服务CodeArts Pipeline 旨在提升编排体验 开放插件平台 并提供标准化的DevOps企业治理模型 将华为公司内的优秀研发实践赋能给伙伴和客户 灵活编排 高效调度 开放流水线插件 内置企业DevOps研发治理模型 体
  • 测试工程师进阶面试题目大合集

    很多软件测试工程师在面试的时候都会遇到考官给的各种各样的面试题 这也反应了测试工程师对企业的重要性 面试通常分为以下几个方面 由于篇幅有限 在这里就只给大家分享一些比较常见的问题 一 自我介绍 这里我不分享如何自我介绍 比我话术之类 相信大
  • STM32的485

    文章目录 RS232 COM接口 232通信 232电平 传输距离 RS485 485电平 RS485的两个电阻 RS485连接方式 SP3485芯片 485通信实验 实验介绍 Rs485 h Rs485 c 先初始化端口 串口和中断 F4
  • Discuz!应用中心安装插件显示数据下载错误(105/102)的解决方法

    Discuz 应用中心安装插件的时候最后提示数据下载错误 105 或数据下载错误 102 的问题 搜索了下看见很多站长反馈这个问题 出现类似的错误主要原因是服务器和应用中心连接出现问题 可以从以下3点去排查 1 云平台需要保证正常 所以先看
  • SAT (Separating Axis Theorem)

    Skip to content Home Download GitHub Maven Central About News Documentation Getting Started FAQ Samples Advanced Joints
  • jenkins中findbugs插件检测规则配置

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 近期项目中在jenkins自动构建基础上引入了findbugs进行代码检测 藉以发现项目中隐藏的一些问题 部署使用后发现一些bug是项目中不需要去修改的 众所周知在ecli

随机推荐

  • 注意力评分函数(掩蔽softmax操作,加性注意力,缩放点积注意力)

    将注意力汇聚的输出计算可以作为值的加权平均 选择不同的注意力评分函数会带来不同的注意力汇聚操作 当查询和键是不同长度的矢量时 可以使用可加性注意力评分函数 当它们的长度相同时 使用缩放的 点 积 注意力评分函数的计算效率更高 注意力汇聚 N
  • 蓝桥杯基础试题汇总

    目录 1 试题 基础练习 A B问题 2 数列问题 3 试题 基础练习 十六进制转八进制 4 试题 基础练习 十六进制转十进制 5 试题 基础练习 十进制转十六进制 6 试题 基础练习 序列求和 7 试题 基础练习 圆的面积 8 试题 基础
  • 北京工作单身,老家江西,90年水瓶男,无人驾驶公司从事研发工作

    对面走过来一个人 你撞上了那就是爱情 人生就是在走一条长长的路 我不知道它有没有终点 但我知道我会在路上遇到自己喜欢的人 我要在路上立个路牌啦 哦哦 开个玩笑 哈哈 博主 男生 水瓶座 90年 来自江西农村 本科学历 男 身高167cm 独
  • Ubuntu16.04配置Android开发环境

    1 下载安装jdk 用oracleJDK 据说openJDK很难用 下载地址 http www oracle com technetwork java javase downloads jdk8 downloads 2133151 html
  • [转]npm install 参数 的含义

    npm 5 0 0 之前 有 save 参数才会把模块写入到 packages json 现在已经是内置参数 不用额外写了 1 npm 常用的安装命令 npm i 就是npm install 简写 npm i xxx D 就是 npm i
  • 第十一章 关联容器(重点)

    11 关联容器 重点 关联容器中的元素是按关键字来保存和访问的 map 中的元素是一些关键字 值 key value 对 关键字起到索引的作用 值则表示与索引相关联的数据 set 中每个元素只包含一个关键字 set 支持高效的关键字查询操作
  • 运用威廉指标判断短线买卖点(图解)

    威廉指标 W R 又称为威廉超买超卖指数 它与随机摆动指标 KDJ 相似 也是一种分析市场短期内超买超卖情况的摆动类指标 威廉指标是一个波动性很强的短线指标 它可以帮助投资者在震荡行情中较为准确地进行高抛低吸操作 威廉指标的设计原理 威廉指
  • VS Code 配合 WSL 搭建 C/C++ 开发环境

    WSL 真香 最近在看 TCP IP网络编程 韩国人写的 讲解了 Windows 和 Linux 平台下的网络编程 才看了四章 感觉通俗易懂 值得一读 出版社网站上提供了源码 平时主要使用 Windows 为了看本书切换到 Linux 感觉
  • 盘点JAVA中比较常见的数据类型的 取值空间大小(让我们来干了这杯爪洼岛咖啡)

    JAVA作为一门面向对象的编程语言 吸收了C 等编程语言的优 点的同时 也展现了它独有的强大一面 列如可移植性可跨平台 性与及兼容性等特征 吸引了无数程序猿为其着迷 话不多说接下来今天我来带大家了解JAVA这门编程语言 中常用的数据类型的相
  • 深度学习------pytorch,CNN:实现mnist,cifar10数据集

    1 torch实现mnist数据集 1 1 cnn卷积 用全连接层写 实现mnist数据集分类 import torch from torch autograd import Variable import numpy as np from
  • How do Functional, Structural, and Behavioral Models Work Together to Describe a Whole System?

    原文链接 https brogramo com how do functional structural and behavioral models work together to describe a whole system As a
  • 机器学习、数据挖掘和统计模式识别学习(Matlab代码实现)

    目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 1 概述 机器学习是让计算机在没有明确编程的情况下采取行动的科学 在过去的十年中 机器学习为我们提供了自动驾驶汽车 实用的语音识别 有效的网络搜索以及对人类基因组的理解大大提
  • postgresql-使用pg_dump导出表、pg_store导入表

    pg dump 是一个用于备份PostgreSQL数据库的实用工具 即使当前数据库正在使用 也能够生成一致性的备份 且不会阻塞其他用户访问数据库 包括读 写 pg restore 从一个归档中恢复一个由 pg dump 创建的 Postgr
  • 航空航天专业词汇(待补全)

    航空航天专业词汇 英文 中文 aborted rejected abandoned take off 中断起飞 above cloud 在云上 access flap 接口盖 acceleration 加速促进 actuating jack
  • html type=hidden 属性,input 属性及类型有哪些(type=text/button/hidden)

    input 从字面意就可以看出专门用来给用户输入文字的 当然也包括选择文件 它不具体表示某一类元素 如文本框 text 要使它具体表示一类元素必须加类型指明 如表示文本框加 type text type 也是 input 众多属性中最重要的
  • spring通过文件属性注入bean和基于xml的bean的自动装配以及spring-eel表达式的使用加代码合集

    前言 本章是spring基于XML 配置bean系类中第7篇讲解spring通过文件属性注入bean和基于xml的bean的自动装配以及spring eel表达式的使用加代码合集 个人主页 尘觉主页 个人简介 大家好 我是尘觉 希望我的文章
  • c语言 打空心菱形

    没错 如图所示 我们要整一个这样的菱形 写的挺麻烦的 代码如下 我是一半一半写的 要n 5 先写上半部分的代码 那么它是咋写出来的呢 本题可以完全用for语句写 但我选择了用for和if语句相结合的方式 i是代表的横 j代表的是列 所以它最
  • nginx相关漏洞处理:CVE-2016-2183、CVE-2022-41741、CVE-2022-41742

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 漏洞内容 二 现状 三 centos7安装openssl11 四 升级nginx到1 24 0 1 下载nginx 2 编译安装nginx 3 配置ngi
  • 2022数学建模美赛E题详细思路获取

    已更新 公众号 千千小屋grow 数据在文后链接 背景 正如我们所知 气候变化对生命构成了巨大的威胁 为了减轻气候变化的影响 我们需要采取严厉的行动 以减少大气中的温室气体的数量 仅仅是减少温室气体的排放是不够的 我们需要努力增加通过生物圈
  • log4j日志在java控制台输出,简单实用

    log4j日志在java控制台输出 简单实用 1 log4j输出有2中方式 第一种是将日志信息保存在一个文本当中 第二种是输出到控制台中 下面介绍第二种方式 2 在控制台输出log4j日志信息 是开发项目中常用的也是比不可少的也是必须会的一