Java开源框架类库介绍(五)--log4j

Java日志框架Log4j 2详解 这是一篇Log4j 2的详解,感兴趣的可以观看 阅读详情

Log4j其实更多的是一个工具,主要用于我们程序运行时需要记录日志的时候,这些日志可以用来进行数据分析和问题定位。


1. 准备工作

Log4j的官网是:http://logging.apache.org/log4j/2.x/

Maven依赖项添加如下:

		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>${log4j.version}</version>
		</dependency>

2.使用

Log4j最重要的使用是配置文件,默认的文件名是log4j.properties和log4j.xml。首先我们通过一个最简单的例子进行讲解。

2.1 配置文件

这里我们先使用properties文件进行讲解:
#首先设置rootLogger,即输出级别过滤和输出目的地
log4j.rootLogger=debug,myappender

#输出到控制台
log4j.appender.myappender=org.apache.log4j.ConsoleAppender
#样式为TTCCLayout
log4j.appender.myappender.layout=org.apache.log4j.TTCCLayout

可以看到,我们需要设置的属性包括:输出级别、输出目的地、输出格式。

2.2 调用代码

调用代码非常简单,如下:
public class LogUtil {
	public static void debug(Object sender, Object msg) {
		Logger logger = Logger.getLogger(sender.getClass());
		logger.debug(msg);
	}
	public static void info(Object sender, Object msg) {
		Logger logger = Logger.getLogger(sender.getClass());
		logger.info(msg);
	}
	public static void warn(Object sender, Object msg) {
		Logger logger = Logger.getLogger(sender.getClass());
		logger.warn(msg);
	}
	public static void error(Object sender, Object msg) {
		Logger logger = Logger.getLogger(sender.getClass());
		logger.error(msg);
	}
	public static void fatal(Object sender, Object msg) {
		Logger logger = Logger.getLogger(sender.getClass());
		logger.fatal(msg);
	}
}

这里我们提供调用者的参数包括:调用者、输出消息。
其中调用者用于给Logger类使用,这样可以在后面的输出格式中输出调用的类名等信息,消息及我们需要输出的内容。
这样,下面到了我们来详细讲解配置文件的时候了。


3. 配置文件详解

相对来说我个人觉得xml文件格式更好看一些,且xml能够提供的配置项更多,所以这里我将使用xml作为我们讲解的配置文件。

3.1 基本概念

之前我们讲过我们需要设置输出目的地、输出格式和输出级别。下面我们分别详细来讲。

3.1.1 输出目的地

输出目的地有好多种类型,后面我们会用例子来讲解,这里我们需要知道的主要类型有:
  1. org.apache.log4j.RollingFileAppender(滚动文件,自动记录最新日志)
  2. org.apache.log4j.ConsoleAppender (控制台)
  3. org.apache.log4j.FileAppender (文件)
  4. org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件)
  5. org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)

3.1.2 输出格式

输出格式主要包括以下格式,我们也会在后面的例子中详细示例如何使用:
  1. org.apache.log4j.HTMLLayout(以HTML表格形式布局)
  2. org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
  3. org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
  4. org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

3.1.3 输出级别

输出级别主要包括:OFF、DEBUG、INFO、WARN、ERROR、FATAL,依次递减。也就是说,如果你设置了ERROR级别,那么WARN之前的级别均不可见,只会输出ERROR和FATAL。

3.2 ConsoleAppender

控制台输出+最简单的SimpleLayout例子:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
	<appender name="myConsoleAppender" class="org.apache.log4j.ConsoleAppender">
		<layout class="org.apache.log4j.SimpleLayout" />
		<param name="ImmediateFlush" value="true" />
		<param name="Target" value="System.out" />
		<param name="Threshold" value="INFO" />
		<!--过滤器设置输出的级别 -->
		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="levelMin" value="debug" />
			<param name="levelMax" value="warn" />
			<param name="AcceptOnMatch" value="true" />
		</filter>
	</appender>

	<!-- 指定logger的设置,additivity指示是否遵循缺省的继承机制 -->
	<logger name="com.freesoft.testAppender" additivity="false">
		<priority value="info" />
		<appender-ref ref="myConsoleAppender" />
	</logger>

	<!-- 根logger的设置 -->
	<root>
		<!-- root级别输出设置 -->
		<priority value="debug" />
		<!-- 目的地 -->
		<appender-ref ref="com.freesoft.testAppender" />
	</root>
</log4j:configuration>

注意,理解顺序上应该首先看root的设置,root中引用到了com.freesoft.testAppender,testAppender又引用了myConsoleAppender,myConsoleAppender中进行了一系列详细的设置。后面的例子中我仅针对每一个Appender来给出设置的例子。


3.3 FileAppender

将输出内容写入到文件中。

	<appender name="myFileAppender" class="org.apache.log4j.FileAppender">
		<param name="ImmediateFlush" value="true" />
		<param name="Threshold" value="INFO" />
		<layout class="org.apache.log4j.TTCCLayout" />
		<param name="Append" value="true" />
		<param name="File" value="D:/tmp/log4j.log" />
	</appender>

3.3 RollingFileAppender

将输出内容写入到不断增长的文件中,如果文件内容增长到一定大小,将会自动写入另一文件。

	<!-- Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。 -->
	<!-- ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。 -->
	<appender name="myRollingFileAppender" class="org.apache.log4j.RollingFileAppender">
		<layout class="org.apache.log4j.HTMLLayout">
			<param name="LocationInfo" value="true" />
			<param name="Title" value="My Logging" />
		</layout>
		<param name="File" value="D:/tmp/rolling.html" />
		<param name="Append" value="true" />
		<!-- 后缀可以是KB, MB 或者GB。在日志文件到达该大小时,将会自动滚动,即将原来的内容移到logging.log4j.1文件中。 -->
		<param name="MaxFileSize" value="10kb" />
		<!-- 指定可以产生的滚动文件的最大数,例如,设为2则可以产生logging.log4j.1,logging.log4j.2两个滚动文件和一个logging.log4j文件。 -->
		<param name="MaxBackupIndex" value="10" />
	</appender>

3.4 DailyRollingFileAppender

根据设定的时间值,将内容分别写入到不同文件中。这个在我们开发的Web Application中经常用到,我们的日志一般都是按照每天固定保存的,便于问题分析和每天凌晨时分的统计分析。

	<!-- Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。 -->
	<!-- ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。 -->
	<appender name="myDailyRollingFileAppender" class="org.apache.log4j.DailyRollingFileAppender">
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern"
				value="[%d{yy-MM-dd HH:mm:ss,SSS\} %-5p] [%t] %c %n -%l - %m%n" />
		</layout>
		<param name="File" value="D:/tmp/rolling.log" />
		<param name="Append" value="true" />
		<!-- 今天的日志文件名为logging.log4j,前一个月的日志文件名为logging.log4j.yyyy-MM。 -->
		<!-- 可以指定按周、天、时、分等来滚动日志文件,对应的格式如下: -->
		<!-- 1)'.'yyyy-MM:每月 -->
		<!-- 2)'.'yyyy-ww:每周 -->
		<!-- 3)'.'yyyy-MM-dd:每天 -->
		<!-- 4)'.'yyyy-MM-dd-a:每天两次 -->
		<!-- 5)'.'yyyy-MM-dd-HH:每小时 -->
		<!-- 6)'.'yyyy-MM-dd-HH-mm:每分钟 -->
		<param name="DatePattern" value="'.'yyyy-MM-dd" />
	</appender>

注意这里我们使用到了PatternLayout,这个也是我们最常用的,其中的表达式中的意思分别代表:

  1. %m 输出代码中指定的消息
  2. %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
  3. %r 输出自应用启动到输出该log信息耗费的毫秒数
  4. %c 输出所属的类目,通常就是所在类的全名
  5. %t 输出产生该日志事件的线程名
  6. %l 输出产生该日志事件的代码位置
  7. %n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
  8. %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式。比如:%d{yy-MM-dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
  9. %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。相当于%c.%M(%F:%L)的组合
  10. %x:输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
  11. %M:输出产生日志信息的方法名。
  12. %F:输出日志消息产生时所在的文件名称。
  13. %L::输出代码中的行号。
  14. %%:输出一个"%"字符。
另外,还可以在%与格式字符之间加上修饰符来控制其最小长度、最大长度、和文本的对齐方式。如:
  1. c:指定输出category的名称,最小的长度是20,如果category的名称长度小于20的话,默认的情况下右对齐。
  2. %-20c:"-"号表示左对齐。
  3. %.30c:指定输出category的名称,最大的长度是30,如果category的名称长度大于30的话,就会将左边多出的字符截掉,但小于30的话也不会补空格。


3.5 RemoteAppender

这个配置用于将服务器上生成的log输出到另一台log服务器。

3.5.1 待输出log服务器配置

如果我们一台Web Application服务器需要将日志输出到另一台服务器,可以这样配置(我这里的试验是将其输出到本地):

	<!-- 可选参数Threshold -->
	<appender name="remoteAppender" class="org.apache.log4j.net.SocketAppender">
		<!-- 这是远程log server -->
		<param name="remoteHost" value="localhost" />
		<!-- 这是远程log server port -->
		<param name="port" value="4560" />
		<param name="ReconnectionDelay" value="1000" />
		<param name="LocationInfo" value="true" />
	</appender>

同样还需要对另外一台接收日志的服务器进行配置,这里我使用了properties文件:

# 这里配置的是SocketServer这个Appender的配置,其输出的log会写入到log4jserver.log中
log4j.logger.org.apache.log4j.net.SocketServer=DEBUG,serverFile
log4j.additivity.org.apache.log4j.net.SocketServer=false
log4j.appender.serverFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.serverFile.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.serverFile.encoding=UTF-8
log4j.appender.serverFile.File=D:/tmp/log4jserver.log
log4j.appender.serverFile.layout=org.apache.log4j.PatternLayout
log4j.appender.serverFile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss},%m %n

# 这里是log4j的root配置,用于接收客户端传递的log内容
log4j.rootCategory=INFO, globalfile
log4j.appender.globalfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.globalfile.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.globalfile.encoding=UTF-8
log4j.appender.globalfile.File=D:/tmp/global.log
log4j.appender.globalfile.layout=org.apache.log4j.PatternLayout
log4j.appender.globalfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss},%m %n

然后在服务端运行以下命令启动服务端,再从客户端运行测试输出log即可:

java -cp log4j-1.2.17.jar org.apache.log4j.net.SocketServer 4560 D:/tmp/log4j-server.properties D:/tmp/

注意:这里其余的几个参数都容易理解,D:/tmp/lg4j-server.properties是我们上面的配置文件,D:/tmp这个参数是用来在你需要将对应每个ip来的log都分别输出到不同文件的时候去用的,你可以在D:/tmp目录下放几个文件,基本的配置使用generic.lcf,文件内容如下:

log4j.rootCategory=,A4
log4j.appender.A4=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A4.file=127.0.0.1.log
log4j.appender.A4.DatePattern='.'yyyyMMdd
log4j.appender.A4.layout=org.apache.log4j.PatternLayout
log4j.appender.A4.layout.ConversionPattern=/n/n[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

如果你需要对192.168.1.1的这个ip来的log存储到另一个文件,则需要配置内容如上的一个192.168.1.1.lcf文件,并且需要修改下org.apache.log4j.net.SocketServer代码中的一个小bug。

LoggerRepository configureHierarchy(InetAddress inetAddress)
  {
    cat.info("Locating configuration file for " + inetAddress);

    String s = inetAddress.toString();
    int i = s.indexOf("/");
    if (i == -1) {
      cat.warn("Could not parse the inetAddress [" + inetAddress + "]. Using default hierarchy.");

      return genericHierarchy();
    }
// 将下面一行内容注释
//    String key = s.substring(0,i);
    String key = s.substring(i+1);

    File configFile = new File(this.dir, key + CONFIG_FILE_EXT);
    if (configFile.exists()) {
      Hierarchy h = new Hierarchy(new RootLogger(Level.DEBUG));
      this.hierarchyMap.put(inetAddress, h);

      new PropertyConfigurator().doConfigure(configFile.getAbsolutePath(), h);

      return h;
    }
    cat.warn("Could not find config file [" + configFile + "].");
    return genericHierarchy();
  }

否则会报找不到.lcf文件的异常。

3.6 SMTPAppender

这个配置可以将生成的log以email形式发送。

	<appender name="mySMTPAppender" class="org.apache.log4j.net.SMTPAppender">
		<param name="Threshold" value="INFO" />
		<param name="BufferSize" value="128" />
<!-- 		注意不要使用smtp.qq.com,这个地址是需要ssl链接的 -->
		<param name="SMTPHost" value="smtp.exmail.qq.com" />
		<param name="SMTPUsername" value="xxx@qq.com" />
		<param name="SMTPPassword" value="xxx" />
		<param name="From" value="xxx@qq.com" />
		<param name="To" value="xxx@qq.com" />
		<param name="Subject" value="测试邮件发送log" />
		<param name="LocationInfo" value="true" />
		<param name="SMTPDebug" value="true" />
		<layout class="org.apache.log4j.SimpleLayout" />
	</appender>

3.7 JDBCAppender

这里仅演示写入MySQL数据库的例子:

	<appender name="myJDBCAppender" class="org.apache.log4j.jdbc.JDBCAppender">
		<param name="URL" value="jdbc:mysql://localhost:3306/log4j" />
		<param name="driver" value="com.mysql.jdbc.Driver" />
		<param name="user" value="root" />
		<param name="password" value="root" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern"
				value="INSERT INTO log4j(stamp,thread, info_level,class,message) VALUES ('%d', '%t', '%p', '%c', '%m')" />
		</layout>
	</appender>




Java Log4j 入门指南:从菜鸟到高手 对于很多小伙伴来说,“日志”这个词可能有点枯燥乏味,但其实日志可是程序中的“侦探”,帮我们追踪程序的每一个动作。在开发过程中,我们经常需要打印一些调试信息,以便追踪程序的状态和错误。Log4j 是 Apache 下的一款开源日志组件,它可以让我们的 Java 应用程序轻松地记录日志信息。Log4j 支持多种日志级别,可以输出到不同的目的地(如控制台、文件等),而且非常灵活,可以根据需要定制日志格式。日志记录是软件开发中非常重要的一环,它不仅能帮助我们追踪和解决问题,还能提高代码的可维护性和可读性。 阅读详情

相关推荐

Log4j日志包

需要配置: log4j.rootLogger=debug,CONSOLE,testfile,A1,MAIL ################### # Console Appender ################### 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=[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.testfile=org.apache.log4j.FileAppender log4j.appender.testfile.File=c\:\\file.html log4j.appender.testfile.Append=false log4j.appender.testfile.layout=org.apache.log4j.HTMLLayout log4j.appender.testfile.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n ################### # 每天一个日志文件 ################### log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender log4j.appender.A1.File=c\:\\SampleMessages.html log4j.appender.A1.DatePattern=yyyyMMdd-HH log4j.appender.A1.layout=org.apache.log4j.HTMLLayout ################### # 邮件发送 ################### log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender log4j.appender.MAIL.BufferSize=10 log4j.appender.MAIL.From=wisdom_xw@163.com log4j.appender.MAIL.SMTPHost=smtp.163.com log4j.appender.MAIL.SMTPUsername=wisdom_xw log4j.appender.MAIL.SMTPPassword= log4j.appender.MAIL.Subject=Messsage From LOG4J log4j.appender.MAIL.To=281510262@qq.com log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout log4j.appender.MAIL.layout.ConversionPattern=[ErrorMessage] %d - %c -%-4r [%t] %-5p %c %x - %m%n

Log4j2的DefaultRolloverStrategy详解

当满足条件(日志大小、指定时间等)重命名或打包原日志文件进行归档,生成新日志文件用于日志写入。设置后,假如10点的日志开始重启服务,则从11点触发一次rollover操作,生成。设置后,假如10点的日志开始重启服务,则从11点触发一次rollover操作,生成。然后,每间隔6小时,则下一次是17点触发一次,生成。然后,每间隔6小时,则下一次是17点触发一次,生成。格式对该日志进行压缩重命名并归档,并生成新的文件。对该日志进行压缩重命名并归档,并生成新的文件。对该日志进行压缩重命名并归档,并生成新的文件。

张紫娃的博客 8402

Vue项目实战:海康WebControl插件从安装到预览功能全流程(附RSA加密避坑指南)

本文详细介绍了在Vue项目中集成海康威视WebControl插件的全流程,从环境准备、插件部署到核心功能实现。重点解析了使用JS_RequestInterface获取RSA公钥并进行加密参数初始化的关键步骤与常见避坑指南,帮助开发者高效完成监控视频预览功能的开发与调试。

linux6sysadmin的博客 1227

RollingFileAppender和DailyRollingFileAppender

log4j提供RollingFileAppender和DailyRollingFileAppender将日志记录输出到文件。RollingFileAppender按log文件最大长度限度生成新文件,DailyRollingFileAppender按日期生成新文件。     l og4j.rootCategory=INFO, CONSOLE,R log4j.appender.R...

new_jeffer的专栏 1234

STRING数据库的蛋白质相互作用(PPI)网络分析

在转录调控相关的文献中,我们经常能够看到这样的蛋白质相互作用网络(protein protein interaction network,PPI network)。具体而言,这些相关的文献中首先通过RNA-seq、表达谱芯片或者蛋白质组分析等,找到了在不同分组样本间一系列的差异表达基因或蛋白。

weixin_43029125的博客 9458

Debian下Rust环境极速安装指南:国内镜像+避坑配置(附清华/中科大源对比)

本文详细介绍了在Debian系统上快速安装和配置Rust开发环境的完整指南。针对国内网络环境,重点对比评测了清华大学、中国科学技术大学等主流镜像源,提供了详细的安装配置步骤、Cargo优化技巧以及常见问题排查方案,帮助开发者显著提升依赖下载和编译效率。

s8t9u0v1w的博客 1162

使用log4j扩展包的RollingFileAppender生成带时间戳的日志文件

DailyRollingFileAppender生成的文件是不带时间戳的,必须在某个时间点后,才对原来文件加上时间戳进行重命名。 比如时间戳精确到小时,格式为.yyyy-MM-dd-HH,当前时间为2011-05-05的5点,那么日志为 log 时间变为6点之后(并且6点有日志访问),日志为 log log.2011-05-05-05 因为log4j是事件触发的,如果某段时间没有日...

flysnowxf技术博客 980

用C#和MQTTnet在WinForm里做个简易物联网监控后台(附完整源码)

本文详细介绍了如何使用C#和MQTTnet库在WinForm中构建一个简易物联网监控后台。通过实战案例,包括环境配置、MQTT服务端实现、客户端监控功能及高级优化技巧,帮助开发者快速搭建高效的物联网监控系统,适用于工业自动化和智能家居场景。

weixin_29540599的博客 393

详解Log4j2中的RollingFileAppender

目录 一、什么是RollingFile 二、TriggeringPolicy SizeBasedTriggeringPolicy TimeBasedTriggeringPolicy CompositeTriggeringPolicy 三、DefaultRolloverStrategy 四、DeleteAction 五、程序测试demo 六、参考资料 一、什么是RollingFile RollingFileAppender是Log4j2中的一种能够实现日志文件滚动更新(rollover)

1万+

使用moveit中的报错及解决

1.fatal error: moveit/move_group_interface/move_group.h: 没有那个文件或目录。// #include <moveit/move_group_interface/move_group.h> 改为。问题1 moveit/move_group_interface/move_group.h: 没有那个文件或目录。在运行c++程序时报错。

qq_60566155的博客 2286

基于TDOA的chan算法(定位算法)

Chan算法原理 TDOA(TDOA,the time differences of arrival,到达时间差),Chan算法是TDOA定位方法的一个很好用的方法。 Chan算法是非递归双曲线方程组解法,具有解析表达式解,主要特点是:在测量误差服从理想高斯分布时,它的定位精度高、计算量小,并且可以通过增加已确定点的数量来提高算法精度。 该算法的推导前提是基于测量误差为零均值高斯随机变量,对于实际环境中误差较大的测量值,比如在有非视距误差的环境下,该算法的性能会有显著下降。二维情况下,可分为只有三个点参与定

优快云不再更新 2万+

重写 log4j RollingFileAppender,支持每日归档

http://wiki.apache.org/logging-log4j/DailyRollingFileAppender

上尚若水 2742

ROS教程(四):RVIZ使用教程(详细图文)

前言 根据前面的教程已经学会了创建功能包,那么本篇文章主要内容则是通过节点来发布数据至RVIZ

Leslie的博客 17万+

最详细、最全面的【Java日志框架】介绍,建议收藏,包含JUL、log4j、logback、log4j2等所有主流框架

本文为 【Java日志框架】 相关知识,对日志的概念与作用,JUL日志框架,Log4j日志框架,Logback日志框架,Log4j2日志框架,日志门面如Slf4j日志门面、JCL日志门面等进行详尽介绍~

小新要变强的博客 3920

CANoe之I/O功能采集电压

在进入ECU自动化测试中,有时会用到采集ECU电压,CANoe除了可以仿真、监听CAN、ETH、LIN等网络报文外,部分设备(如VN5650、VN1630等)上还有一个I/O口,这个I/O口就可以用来满足我们自动化测试中采集电压的需求。CANoe上的I/O功能用处还是特别大,比如网络管理测试、相关诊断都会用到。

测试领域技术分享 4830

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Log4j2-03-log4j2 入门介绍 log4j2 日志级别

几乎每个大型应用程序都包含自己的日志记录或跟踪 API。根据这一规则,E.U. SEMPER 项目决定编写自己的跟踪 API。那是在 1996 年初。经过无数次的改进、多次改进和大量工作,API 已经发展成为 log4j,一个流行的 Java 日志记录包。该软件包根据 Apache 软件许可证分发,这是一个由开源计划认证的成熟的开源许可证。

1020

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

史诗级漏洞爆发,Log4j 背后的开源人何去何从?

开源并不如我们想象的那般光鲜。

m0_50065287的博客 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

开源轮子 - Log4j和Log4j2

开源轮子 - Log4j和Log4j2

qq_43350524的博客 952

[java][log4j]最详细的Log4j使用教程

其中,level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。当然除了上面的配置方法,还有其它,比如做一个J2EE应用,在J2EE应用使用Log4j,必须先在启动服务时加载Log4j的配置文件进行初始化,可以在web.xml中进行。配置文件的大致内容:log4j可以指定输出的log级别的最低等级,以及log的输出配置格式,每个log可以指定多个输出方式。

一名不太专业的程序员 4301

【Java Web】Log4j介绍

Log4j 是一个非常流行的开源 Java 日志框架,由 Apache Software Foundation 开发。它允许开发者在应用程序中插入日志记录语句,这些语句可以输出到多个目的地,比如控制台、文件、数据库等。Log4j 提供了灵活的日志记录机制,可以通过配置文件轻松地控制日志的格式、级别和目标。

m0_66584716的博客 1218

[转]Java的开源项目:简单介绍Log4J的使用

来源:赛迪网    作者:dxaw         一、前言Java的开源项目太多了,这种遍地开花的局面绝对赶得上中国五代十国时期的“百家争鸣”、“百花争艳”的繁荣。使用java技术,我们的项目几乎不需要购买有关java支撑开发产品,只需把一个一个开源产品经过架构师的手,合理搭配和拼接,就能做出灵活性佳、性能

jackei的测试生活 544

Log4J 日志介绍功能介绍与使用案例帮你简单理解log4j

Log4J log for java 谐音梗懂不?建议使用log4j,直接使用官方给的log4j。没必要自己写,只要能够看懂。了解前面两个就行。然后看框架中的日志,例如mybatis直接看里面的日志就行。能理解修改就可以。 Log4j是什么? ​ Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能

皮皮亮的博客 2450

Java开源组件库_Index

1 日志框架 2种日志接口框架,4种日志实现框架 接口:Apache Commons Logging、SLF4J 实现:JDK Logging、Apache Log4j、Logback、Apache Log4j2 1.1 Apache Commons Logging 1.2 SLF4J 1.3 JDK Logging 1.4 Apache Log4j 1.5 Logback 1.6 Apach...

添仔哥哥 2389

Log4j的原理及应用详解(五)

Log4j是Apache的一个开源项目,它是一个可靠、快速、灵活的日志框架(API),主要用于Java语言编写的应用程序中。始于1996年,作为记录E.U. SEMPER(Secure Electronic Marketplace for Europe)项目跟踪信息的API。经过大量的完善和蜕变,最终演进为Log4j。 本文将跟随《Log4j的原理及应用详解(四)》的进度,继续介绍Log4j。希望通过本系列文章的学习,您将能够更好地理解Log4j的内部工作原理,掌握Log4j的使用技巧,

凛鼕将至的博客 1463

log4j日志框架介绍

日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包。 一、入门实例 1.新建一个JAva工程,导入包log4j-1.2.17.jar,整个工程最终目录如下 2、src同级创建并设置log4j.proper

fengzijia的专栏 614

几种常见的java开源库,及其功能介绍

1、Commons Math 是Apache上一个轻量级自容器的数学和统计计算方法包,包含大多数常用的数值算法。2、LWJGL(Lightweight Java Game Library)可以帮助Java程序员开发有着商业性质的游戏。LWJGL为开发者提供简单易用的API来访问OpenGL (Open Graphics Library)和OpenAL (Open Audio Library),同样也

请叫我王老魔 4507
上一篇: Android常用复杂控件使用(四)--Fragment(续)
下一篇: Java开源框架类库介绍(六)--SLF4J
Soloman
博客等级 码龄25年 171粉丝 159原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值