【零碎JAVA】Log4J 教程

Log4J引入

在我们编写Java代码的时候,经常会用System.out.println(“”)来输出一些语句,来帮助我们检查代码运行是否正确,但是,当我们提交代码的时候,又会将这些输出语句注释或者删除掉,很容易出现遗漏的情况。在这样的使用前景下,就有了Log4J这个日志管理工具,他是Apache的一个开源项目,我们可以在http://logging.apache.org/log4j/1.2/download.html 中下载Log4J的相关资料。他能够版我们管理日志,管理日志的输出格式,管理日志的输出目的地(即在控制台输出,还是在文本文件中输出)。

简单的使用示例

public void fun1(){
    Logger logger = Logger.getLogger(SimpleDemo.class); //  SimpleDemo为这个类的名字
    logger.addAppender(new ConsoleAppender(new SimpleLayout()));    
    logger.setLevel(Level.WARN);

    logger.debug("Debug");
    logger.info("Info");
    logger.warn("Warn");
    logger.error("Error");
    logger.fatal("Fatal");

}

运行这个方法前,我们需要导入Log4j需要的库文件(log4j-1.2.17.jar)。运行这个方法,我们会发现,他并没有将所有的输出信息输出出来,而只输出了Warn,Error,Fatal这三个,这就涉及到日志级别的问题。

日志级别

日志级别描述
FATAL重大错误,例如系统崩溃
ERROR错误,例如某模块瘫痪
WARN警告,程序的隐患,如果不处理,将来可能就是错误
INFO信息,可以用来查看程序执行的流程
DEBUG调试,用来调试程序的bug

以上是从高到底的顺序列举了日志级别,Log4J使用Logger的setLevel()方法设置日志级别,输出的规则是将日志级别大于等于当前设置的级别的日志输出,默认为DEBUG

Log4J三个核心

Log4J的三大核心是Logger(日志器),Appender(日志输出目标),Layout(格式化器),要使用Log4J,先要设置这三个参数:

Logger:用来输出日志消息的类,它可以输出不同级别的消息,例如错误消息、警告消息等;
Appender:通常我们希望日志输出到文件中,以及控制台,也可能希望日志输出数据库,该类就表示一个输出的目标;
Layout:对输出的消息进行格式化,例如在消息中添加日期,以及级别等。

配置文件

我们可以通过配置文件的方式去配置Log4J,而不需要在代码中去设定他的Appender,Layout等信息,他支持log4j.properties和log4j.xml两种格式的配置文件,他们都需要被创建在src目录下,通常使用log4j.properties比较简便。
#log4j.properties
log4j.rootLogger=DEBUG,A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.SimpleLayout
上述给出的是一个简单的配置文件
log4j.rootLogger:表示根日志器,DEBUG是指定根日志器的输出级别,只要大于等于DEBUG级别的日志就可以输出。A1是说明目的地(Appender)的名称;
log4j.appender.A1:表示目的地,org.apache.log4j.ConsoleAppender表示目的地为控制台目的地,即输出结果在控制台上显示;
log4j.appender.A1.layout:表示A1这个目的地的格式化器,org.apache.log4j.SimpleLayout表示简化格式化器。

除了设置根日志器(rootLogger),我们还可以设置其他的日志器
#log4j.properties
log4j.rootLogger=DEBUG,A1
log4j.logger.mylogger=WARN,A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.SimpleLayout
这个配置文件还设置了一个名为mylogger的日志器,我们可以通过
Logger logger = Logger.getLogger(“mylogger”);获取到这个日志器

Appender

Appender是用来指定输出目标的类,我们可以叫他目的地,Log4J中常用的目的地有如下几种:
ConsoleAppender:向控制台输出日志
他的配置就不多做解释了

FileAppender:向文件输出日志
log4j.rootLogger=DEBUG,A1
log4j.appender.A1=org.apache.log4j.FileAppender
log4j.appender.A1.File=log.txt
log4j.appender.A1.Append=true
log4j.appender.A1.layout=org.apache.log4j.SimpleLayout
File表示日志文件的名称,Append表示已追加的方式添加日志

DailyRollingFileAppender:向文件输出日志,每天一个日志文件;
RollingFileAppender是FileAppender的子类,它的作用是当日志文件大小超出文件大小大限时,会把日志文件转换成备份文件,然后再生成一个新的日志文件。
例如日志文件名为log.txt,设置文件大小上限为1KB,当log.txt文件的大小超出了1KB后,把log.txt的名称转换成log.txt.1,然后再生成一个log.txt,新的日志会写入到新的log.txt文件中。当log.txt的大小再次达到1KB时,把log.txt.1名称修改成log.txt.2,把log.txt修改成log.txt.1,然后再生成一个新的log.txt文件。
还可以设置文件的个数,当设置备份文件的个数为3时,表示最多可以有3个文件。当文件达到3后,再次达到1KB时,那么会删除最后一个文件。例如当前已经存在log.txt、log.txt.1、log.txt.2,这时如果log.txt又达到了1KB时,那么删除log.txt.2,然后把log.txt.1修改成log.txt.2,再把log.txt修改成log.txt.1,然后再创建log.txt文件。
log4j.rootLogger=DEBUG,A1
log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1FILE.File=log.txt
log4j.appender.A1.MaxFileSize=1KB
log4j.appender.A1.MaxBackupIndex=3
log4j.appender.A1.layout=org.apache.log4j.SimpleLayout

RollingFileAppender:向文件输出日志,当文件大小达到指定大小后,生成新文件;
DailyRollingFileAppender会根据设定的时间频率生成备份文件。
 当时间频率为yyyy-MM:按月生成备份文件;
 当时间频率为yyyy-ww:按周生成备份文件;
 当时间频率为yyyy-MM-dd:按天生成备份文件;
 当时间频率为yyyy-MM-dd-a:每天生成两次备份;
 当时间频率为yyyy-MM-dd-HH:按小时生成备份文件;
 当时间频率为yyyy-MM-dd-HH-mm:按分钟生成备份文件。
log4j.rootLogger=DEBUG,A1
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=log.txt
log4j.appender.A1.DatePattern=’.’yyyy-MM-dd
log4j.appender.A1.layout=org.apache.log4j.SimpleLayout

PatternLayout

通常,我们都是使用PatternLayout作为Layout的,他可以指定一个模板,让日志根据模板输出,模板字符如下:
 %m:信息本身;
 %c:日志器的名称;
 %d:日期,还可以指定日期的格式,例如:%d{yyyy-MM-dd HH:mm:ss};
 %p:日志级别;
 %n:换行;
 %t:当前线程;
 %l:输出日志的Java类相关信息。

在web项目中配置
log4j.rootLogger=INFO,c1, f1

log4j.appender.c1=org.apache.log4j.ConsoleAppender
log4j.appender.c1.layout=org.apache.log4j.PatternLayout
log4j.appender.c1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p] %m [%t] %c [%l]%n

log4j.appender.f1.File=${catalina.home}/logs/myproject.txt
log4j.appender.f1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.f1.layout=org.apache.log4j.PatternLayout
log4j.appender.f1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p] %m [%t] %c [%l]%n

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: STM32 远程 OTA 升级是一种在不需要物理接触的情况下,通过网络对设备进行软件升级的方法。下面是一个详细的教程: 1. 首先,您需要准备一台具有网络连接功能的 STM32 设备,并确保其能够连接到互联网。 2. 接下来,您需要在 STM32 设备上安装一个 OTA 升级服务,以便接收升级信息。 3. 然后,您需要在您的电脑上准备升级文件,并将其上传到您的 OTA 升级服务。 4. 接下来,您需要在 STM32 设备上启动升级过程,它会连接到 OTA 升级服务,检查是否有可用的新版本,如果有,则开始下载并安装。 5. 最后,您需要确保 STM32 设备在升级完成后正常运行。 注意:这是一个大致的流程,具体的实现方式可能因设备和 OTA 升级服务而异,请参阅相关文档。 ### 回答2: STM32的远程OTA(Over-The-Air)升级是指通过无线网络使设备能够在不需要物理接触的情况下进行固件升级。下面是一份关于STM32远程OTA升级的详细教程: 1. 准备工作: - 确保你有一个基于STM32微控制器的设备,它应该连接到无线网络。 - 确保你已经安装了适用于STM32的OTA库和相关工具,如STM32Cube库和IAR等。 2. 设定OTA服务器: - 搭建一个OTA服务器,可以使用AWS IoT Core或其他平台。 - 在OTA服务器上创建一个升级文件,并生成一个唯一的升级ID。 3. 在STM32设备上实现OTA功能: - 在STM32设备上实现OTA升级功能,可以根据相关库的API进行操作。 - 进行OTA固件升级时,设备应该能够检测到新的固件版本,并下载升级文件。 - 下载后的升级文件应该被存储在可靠且容量足够的存储介质上。 4. 设备OTA升级处理流程: - 设备在连接到OTA服务器后,应该发送一个注册请求,并提供设备ID和相关信息。 - OTA服务器应该验证设备的合法性,并生成一个访问令牌。 - 设备使用访问令牌下载升级文件,并进行固件升级。 5. 实施安全措施: - 在OTA升级过程中,确保数据传输的安全性,可以使用TLS/SSL协议。 - 数据完整性验证,可以使用数字签名或哈希算法等方法。 6. OTA升级完成与后续处理: - 设备在升级完成后,应该向OTA服务器发送一个已完成通知。 - OTA服务器应该记录已完成的升级,以及相应设备的固件版本。 这是一份简单的STM32的远程OTA升级的教程概述。请注意,具体实现步骤可能会因使用的开发工具和平台而有所不同,建议参考官方文档和相关库的指南。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值