Log4j——系统必备“武器”之一

《漏洞研究》Apache Log4j2 远程代码执行漏洞 Apache Log4j2 组件存在远程代码执行漏洞(CVE-2021-44228),该漏洞是由于 Apache Log4j2 某些功能存在递归解析功能,未经身份验证的攻击者通过发送特定恶意数据包,可在目标服务器上执行任意代码。 阅读详情

 
简介
  Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、数据库、甚至是套接口服务器等;用户也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,用户能够更加细致地控制日志的生成过程。
  在需要的时候,这些都可以通过一个配置文件来灵活地进行配置,而不需要修改程序代码。
 
安装
 
我们关心的问题
对于一个日志处理功能来说,我们主要关心的有3个问题:
谁来记录日志?——Logger
  • 如何取得Logger实例?
  1、有很多方法可以创建一个日志记录器(Logger),下面方法可以取回root日志记录器:
Logger logger = Logger.getRootLogger();
  2、还可以这样创建一个新的日志记录器:
Logger logger = Logger.getLogger("LogTest");
  3、比较常用的用法,就是根据类名实例化一个静态的全局日志记录器:
static Logger logger = Logger.getLogger(LogTest.class);
  • 如何记录日志?
日志级别(Level)对应的记录方法(Logger)
FATAL(0)log.fatal()
ERROR(3)log.error()
WARN(4)log.warn()
WARN(6)log.info()
DEBUG(7)log.debug()
记录到哪里?——Appender
  1、ConsoleAppender 使用用户指定的布局(layout) 输出日志事件到System.out或者 System.err。默认的目标是System.out。
  2、DailyRollingFileAppender 扩展FileAppender,因此多个日志文件可以以一个用户选定的频率进行循环日志记录。
  3、FileAppender 把日志事件写入一个文件
  4、RollingFileAppender 扩展FileAppender备份容量达到一定大小的日志文件。
  5、WriterAppender 根据用户的选择把日志事件写入到Writer或者OutputStream。
  6、JDBCAppender 把日志事件写入到数据库中。
日志的格式?——Logger
  1、HTMLLayout 格式化日志输出为HTML表格。
  2、PatternLayout 根据指定的 转换模式格式化日志输出,或者如果没有指定任何转换模式,就使用默认的转换模式。
  3、SimpleLayout 以一种非常简单的方式格式化日志输出,它打印级别 Level,然后跟着一个破折号“-“ ,最后才是日志消息。
 
配置文件说明
  log4j之所以简单易用就是它的可配置性,通过将上面的问题2、3用配置文件来指定,我们的系统就有了强大、近乎完美的日志记录功能!下面是一个配置文件的例子:logconfig.properties

log4j.rootLogger=DEBUG,CONSOLE,A1,im
log4j.addivity.org.apache=true

# 应用于控制台
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=DEBUG
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
#log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n

# 应用于文件
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=file.log
log4j.appender.FILE.Append=false
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

# 应用于按天产生文件
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=SampleMessages.log4j
log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j'
log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout

# 应用于文件回滚
log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
log4j.appender.ROLLING_FILE.Threshold=ERROR
log4j.appender.ROLLING_FILE.File=rolling.log
log4j.appender.ROLLING_FILE.Append=true
log4j.appender.ROLLING_FILE.MaxFileSize=10KB
log4j.appender.ROLLING_FILE.MaxBackupIndex=1
log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

# 用于数据库
# 说明: 数据库:mysql
# 首先创建一数据库表(LOG4J)说明:
# 字段 描述
# GUID 流水号(自增列)
# DATE 时间
# THREAD 当前线程
# LEVEL 当前级别
# CLASS 当前java程序/方法
# MESSAGE 当前输出信息
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=GBK
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
log4j.appender.DATABASE.user=root
log4j.appender.DATABASE.password=
log4j.appender.DATABASE.sql=INSERT INTO LOG4J (DATE,THREAD,LEVEL,CLASS,MESSAGE) VALUES ('%d{yyyy-MM-dd HH:mm:ss}', '%t', '%p', '%l', '%m')
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

# 自定义Appender
log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender
log4j.appender.im.host = mail.cybercorlin.net
log4j.appender.im.username = username
log4j.appender.im.password = password
log4j.appender.im.recipient = corlin@cybercorlin.net
log4j.appender.im.layout=org.apache.log4j.PatternLayout
log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

# “%d %t %p %l %m %n” 的含义:

# %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy-MM-dd HH:mm:ss},输出类似:2005-7-19 17:49:27;
# %t 产生该日志事件的线程名;
# %p 日志的log_level,如DEBUG、WARN或者INFO;
# %c 输出所属的类目,通常就是所在类的全名,如“iNotes.Default”;
# %m 日志的内容;
# %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。如write2database.main(write2database.java:33);
# %n 输出一个回车换行符,Windows平台为“ ”,Unix平台为“ ”

 
示例

package com.javer.test.log4j;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.HTMLLayout;

/**
* javer的Log4j例子程序
* @author javer QQ:84831612
* @version 1.0
* @version http://blog.youkuaiyun.com/java008
*/
public class LogTest
{
 public static void main(String[] args)
 {
  String FILEPATH = "f://logconfig.properties";
  PropertyConfigurator.configure(FILEPATH);
  Logger log = Logger.getLogger(LogTest.class);
// log.addAppender(new HTMLLayout());
  for(int i=0;i<10;i++)
  {
   log.info("第"+(i+1)+"条调试信息");
   log.debug("SQLException:", new java.sql.SQLException("SQL异常!"));
   log.info("hello log4j!");
  }
 }
}

手把手排查IOMMU映射故障:从内核日志到硬件寄存器调试全指南 本文详细解析了IOMMU映射故障的排查方法,从内核日志分析到硬件寄存器调试,提供了一套完整的诊断流程。涵盖AMD和Intel平台的特定调试技巧,包括ATS协商失败、DMA传输错误等常见问题的解决方案,并介绍了高级调试工具链的搭建与性能优化策略。 阅读详情

相关推荐

别再翻手册了!用Materials Studio的Forcite模块,5步搞定复杂溶剂的溶解度参数计算

本文详细介绍了如何使用Materials Studio的Forcite模块,通过5个步骤快速计算复杂溶剂的溶解度参数。从分子建模、结构优化到分子动力学采样,再到最终的内聚能密度计算,该方法大幅提升了石油化工和高分子材料研发中的效率,避免了传统手册查阅和实验的繁琐过程。

weixin_28707739的博客 280

Log4j2漏洞实战:JNDI注入工具对比与高级利用技巧

JNDI(Java命名和目录接口)是Java平台中用于访问命名和目录服务的核心API,其设计初衷是提供统一的资源查找抽象层。然而,当应用程序未对用户输入进行严格过滤时,攻击者可通过构造恶意JNDI查找字符串,诱使服务器加载并执行远程恶意类,从而实现远程代码执行,这便是JNDI注入攻击的基本原理。这种攻击方式技术价值极高,因为它往往能绕过应用层部分防御,直接危及服务器安全,在Log4j2等广泛使用的日志框架漏洞中尤为突出。其典型应用场景包括利用未修复的公共漏洞组件进行初始渗透、在红蓝对抗中测试系统韧性等。本文

子夜轻风 474

从时序迷宫到稳定通信:FSMC配置中的时间参数深度解析与实战避坑指南

本文深入解析STM32 FSMC配置中的时间参数,特别是AddressSetupTime和DataSetupTime的实战配置技巧。通过STM32F407连接SRAM的实际案例,提供从理论计算到CubeMX配置的全流程指南,帮助开发者避免常见时序陷阱,确保稳定通信。

nginx7reverse的博客 82

log4j-scan实战案例:企业级Log4j漏洞扫描最佳实践

Log4j漏洞扫描工具log4j-scan是企业安全团队必备的终极武器!🔍 面对2021年底爆发的Apache Log4j远程代码执行漏洞(CVE-2021-44228),这个开源扫描器提供了完整、准确且广泛的自动化检测方案。本文将分享如何在实际企业环境中高效使用log4j-scan进行Log4j漏洞扫描的最佳实践。 ## 为什么log4j-scan是企业级Log4j扫描的首选工具? log

gitblog_00591的博客 380

sqoop抽取mysql的数据到hive表里面,字段内容被自动截取,导致字段不全的问题解决

今天央视重新转播NBA,写篇博客纪念一下这个重要的日子,湖人的表现就呵呵了!!!! 强行转到博客的主题来 mysql的字段属性:该字段能存下的值比如:“山东” `province` varchar(3) NOT NULL COMMENT '省份' 用sqoop sqoop import --connect "jdbc:mysql://xxxxxx:3306/xxxxxx?tinyInt1isBit=false&zeroDateTimeBehavior=convertToNull..

放肆桀骜 963

PlutoSDR驱动安装避坑指南:从设备管理器异常到MATLAB 2023b完美识别

本文是一份详细的PlutoSDR驱动安装与MATLAB 2023b集成排错指南。针对Windows系统下常见的设备管理器异常、驱动兼容性问题,提供了从旧驱动清理、手动指定驱动文件到USB连接稳定性排查的完整解决方案。重点阐述了如何通过离线安装硬件支持包,并利用MATLAB命令进行连接测试与射频信号验证,最终实现设备的完美识别与稳定调用。

weixin_29159441的博客 428

年薪30W+的秘密:网络安全挖漏洞必备的4类工具与漏洞修复

*随着《数据安全法》《个人信息保护法》等政策落地,企业对安全合规的需求激增,但专业人才缺口却超过300万。因篇幅有限,仅展示部分资料,完整版的网络安全学习资料已经上传优快云,朋友们如果需要可以在下方优快云官方认证二维码免费领取【保证100%免费】:2021年Log4j2核弹级漏洞(CVE-2021-44228),攻击者通过JNDI注入可远程执行任意代码,波及全球70%企业系统。:Web渗透测试标配,拦截修改HTTP请求,精准定位漏洞入口。:企业级漏洞扫描工具,支持5万+漏洞检测,输出专业报告。

十年网络攻防经验 每天分享网络安全知识 556

阿里云一键登录Java后端实战:5分钟搞定号码认证服务集成(附完整代码)

本文详细介绍了如何在Java后端项目中快速集成阿里云号码认证服务(PNVS),实现高效、安全的一键登录功能。文章从核心架构、安全机制解析入手,提供了完整的Maven依赖配置、服务端环境准备、核心业务逻辑实现(包括Token验证、用户处理、异常降级)以及生产环境下的性能优化、监控与部署方案,并附有可直接使用的完整代码示例。

p1q2r的博客 845

年薪30W+的秘密:网络安全“挖漏洞“必备的4类工具与漏洞复现指南

网络安全是“矛与盾”的永恒博弈,漏洞挖掘能力决定了你的职业天花板。

2401_84760719的博客 1035

使用ClickHouse JDBC官方驱动,踩坑无数

这个问题我在网上查原因说是由于Zookeeper压力过大,表变成只读状态,导致ClickHouse插入数据失败。写入数据频率过高。Zookeeper中的集群节点挂掉。而我们项目出现这个问题的原因是第一个:写入数据频率过高。但是在网上搜资料的过程中,我又发现了另外一个问题:我们项目用了JDBC驱动,但ClickHouse官方并不推荐。。证实了官网确实不建议使用驱动:而应该改成驱动,并且推荐使用0.3.2以上的版本:于是,后面几天开始了ClickHouse的JDBC驱动升级之旅。

2万+

MFC实现图书管理系统(附完整源码)

MFC实现图书管理系统(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 801

护网行动资料包大揭秘,白帽子参赛必备的金手指指南

工欲善其事,必先利其器。在护网行动的高压环境下,拥有一套趁手的“武器库”至关重要。这套武器库应当是自动化工具与自定义脚本的有机结合。基础工具链是标配。Kali Linux 依然是大多数安全从业者的首选操作系统,它预装了数百种安全工具。其中,Nmap用于网络发现和端口扫描,是信息收集阶段的瑞士军刀;BurpSuite则是 Web 渗透的核心,无论是抓包改包、暴力破解还是漏洞扫描,都离不开它;SQLMap能极大提高 SQL 注入的检测和利用效率;提供了丰富的漏洞利用模块和后渗透功能,是内网突破的利器。此外,像。

wangluoanquan111的博客 209

【AI产品与商业航图】Flux.1 完全开源 AI 绘图模型:本地部署与 ComfyUI 实战指南

Flux.1是一个开源项目,用户可以自由使用和修改,完全免除使用费用。🖥️本地部署支持:与一些依赖云端计算的工具不同,Flux.1支持本地部署,确保用户可以离线使用并自主控制数据隐私。🔄兼容ComfyUI框架:Flux.1可以无缝集成到ComfyUI中,用户可以享受更加简便和直观的操作界面。🎨卓越的图像生成能力:Flux.1能够生成高质量、细腻的图像,支持多种风格与创作主题的切换。💾低硬件要求。

高校图书馆高级系统架构师/研究馆员,推动高校AI从概念演示到可评审、可交付、可运维:路线图与立项评审、PoC交付、评测回归与上线运维(Baseline/Eval/Ops)。 1737

探索LogMePwn:一键式Log4J漏洞检测利器

探索LogMePwn:一键式Log4J漏洞检测利器 随着网络安全威胁的日益增长,针对特定漏洞的工具成为了安全研究人员和系统管理员的必备武器。今天,我们深入探讨一个备受瞩目的开源项目——LogMePwn,这是专为应对Log4J远程代码执行(CVE-2021-44228)设计的自动化扫描与验证套件。 项目介绍 LogMePwn,以Go语言编写,如同网络安全领域的闪电侠,迅速响应Log4J的安全警报。它...

gitblog_00084的博客 340

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

年薪30W+的秘密:网络安全_挖漏洞_必备的4类工具与漏洞复

导语**为何“挖漏洞”这么值钱?**随着《数据安全法》《个人信息保护法》等政策落地,企业对安全合规的需求激增,但专业人才缺口却超过300万。掌握漏洞挖掘与复现能力,意味着你能直接为企业“排雷”,价值不言而喻。工欲善其事,必先利其器。以下4类工具覆盖漏洞挖掘全流程,从信息收集到漏洞利用,缺一不可!:2021年Log4j2核弹级漏洞(CVE-2021-44228),攻击者通过JNDI注入可远程执行任意代码,波及全球70%企业系统。:升级Log4j至2.17.0+版本,或禁用JNDI查找功能。

m0_71745258的博客 359

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

性能监控与剖析工具全指南:测试开发工程师的“听诊器“与“显微镜“

《性能优化的现代战争》摘要:本文系统介绍了性能监控与优化的全流程工具链。从Linux基础工具(vmstat/top)到企业级监控方案(Prometheus),深入JVM性能剖析(VisualVM/Arthas)和分布式追踪(SkyWalking)。重点解析了火焰图分析技巧和实战案例,如通过GC日志和线程堆栈定位电商系统性能瓶颈。测试开发工程师需要构建包含基础诊断、JVM调优、全链路追踪等工具在内的"性能武器库",实现从被动救火到主动预防的转变。文章还分享了性能优化的进阶路径和推荐学习资源

hogwarts_beibei的博客 786

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

开源包漏洞修复实战(附完整脚本):DevSecOps必备的自动化武器库

快速解决开源组件安全风险,本文详解开源包漏洞修复脚本的实战应用,覆盖CI/CD集成、自动化扫描与批量修复,适用于DevSecOps流程。脚本支持主流语言生态,高效提升安全响应速度,值得收藏。

StepLens的博客 1029
上一篇: 开源Licenses简介
下一篇: 彻底治疗乱码顽症——J2EE.Web应用中文问题解决方案
java008
博客等级 码龄23年 6粉丝 31原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值