Ⅰ SpringBoot2.0 基础案例(02):配置Log4j2,实现不同环境日志打印
日志打印是了解Web项目运行的最直接方式,所以在项目开发中是需要首先搭建好的环境。
1、Log4j2特点
1)核心特点
相比与其他的日志系统,log4j2丢数据这种情况少;disruptor技术,在多线程环境下,性能高;并发的特性,减少了死锁的发生。
2)性能测试
2、日志打印之外观模式
每一种日志框架都有自己单独的API,要使用对应的框架就要使用其对应的API,增加应用程序代码和日志框架的耦合性。
《阿里巴巴java开发手册》,其中有一条规范做了‘强制’要求:
SLF4J日志API
Java简易日志门面(Simple Logging Facade for Java,缩写SLF4J),是一套包装Logging 框架的界面程式,使用外观模式实现。
1、项目结构
2、不同环境的日志配置
使用最直接的方式,不同环境加载不同的日志配置。
1)开发环境配置
2)生产环境配置
3、Log4j2的配置文件
1、简单的测试程序
2、测试效果图
四、源代码地址
Ⅱ java开发两次都碰到log4j的问题了,明明设置了输出级别为debug就是打印不了debug级别的日志
java开发过程中会遇到各种问题,自学的话很难去解决这些问题,推荐去千锋教育学习java开发,有专业团队和老师为学生解决各种专业问题。
java开发需要学的知识有:
1.Java基础语法和oop特性;
2.数据库相关知识,例SQL语言、MySQL、非关系型数据库;
3.Web基础知识;
4.Web主流框架,例Spring、SpringMVC、Mybatis;
5.前端知识等。
想要了解更多有关java的相关信息,推荐咨询千锋教育。千锋企业合作部于2013年成立,主要针对企业用人需求和学员职业规划进行服务。经过8年发展,企业合作部已经成为千锋连接企业和学员的重要纽带。服务面对企业建立全方位、立体化、遍布全国的企业合作网络,覆盖全国一线二线城市大中小型公司,成功帮助20000余名人才实现就业,合作企业达20000余家,每年签订1000余份人才培养订单,让广大学员没有后顾之忧。
Ⅲ 怎样添加java的log4j添加到java项目中
首先,弄到log4j的jar包,maven工程配置以下依赖就行,或者,从阿里的maven仓库下载jar包,添加到工程的“build path”log4j log4j 1.2.17
然后,整一个log4j.properties,内容如下,然后把它放在src/main/java目录(也就是包所在的根目录)
1、普通java工程或spring工程
这是最常见的java工程类型,写demo用的多,把log4j.properties放在src/main/java目录(也就是包所在的根目录)就行了
2、spring mvc工程
web工程里用spring mvc构建的比较多了,把log4j.properties放在src/main/resources的conf目录(web工
程配置文件通常在resources或WEB-INF目录),编辑web.xml,添加
log4jConfigLocation classpath:/conf/log4j.properties org.springframework.web.util.Log4jConfigListener
3、普通web工程
没有了spring提供的listener加载log4j.properties,我们要怎么加载这个文件呢?同样,把log4j.properties
放在src/main/resources的conf目录,我们整一个servlet来加载
{ = 1L; publicvoidinit(ServletConfig config)throwsServletException { String prefix =this.getClass().getClassLoader().getResource("/").getPath(); String path = config.getInitParameter("log4j-path"); PropertyConfigurator.configure(prefix + path); } publicvoiddoGet(HttpServletRequest req, HttpServletResponse res)throwsIOException, ServletException {} publicvoiddoPost(HttpServletRequest req, HttpServletResponse res)throwsIOException, ServletException {} publicvoiddestroy() {} }
然后配置servlet随着web工程启动而初始化,编辑web.xml,添加
log4j com.xmyself.log4j.Log4jServlet log4j-path conf/log4j.properties 1
看着是不是和spring mvc的很像,甚至你也想到了,普通java工程没有指定log4j.properties的路径,那说明
log4j的jar包一定有一个默认的路径。另外,建议,log4j的配置放在第一个,因为后续加载其他组件就要开始使用日
Ⅳ java 如何配置log4j日志文件保存路径
以DailyRollingFileAppender 为例:假设每天一个日志文件
有以下设置:
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=app.log
log4j.appender.A1.DatePattern='.'yyyy-MM-dd
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d %5p - %c -%-4r [%t] - %m%n
此时生成日志文件将位于tomcat的bin目录下,如要将日志文件保存在 :根目录/web-info/logs/下,个人有以下4种解决方案:
1 绝对路径
log4j.appender.A1.File=D:\apache-tomcat-6.0.18/webapps/项目/WEB-INF/logs/app.log
但这种写法灵活性很差
以下3中使用相同的设置原理: jvm的环境变量
2:spring的Log4jConfigListener
通过以下配置:
< context-param>
<param-name>webAppRootKey</param-name>
<param-value>webApp.root</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
< listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
...
log4j.appender.logfile.File=${webApp.root}/WEB-INF/logs/app.log
...
来解决
2:使用已有jvm变量:
例如:
log4j.appender.logfile.File=${user.home}/logs/app.log
日志将位于:例如windows:C:\Documents and Settings\joe\logs\app.log
3 自己设置目录,也就是在项目启动时通过System.setProperty设置
通过实现ServletContextListener来解决:例如
public class log4jlistener implements ServletContextListener {
public static final String log4jdirkey = "log4jdir";
public void contextDestroyed(ServletContextEvent servletcontextevent) {
System.getProperties().remove(log4jdirkey);
}
public void contextInitialized(ServletContextEvent servletcontextevent) {
String log4jdir = servletcontextevent.getServletContext().getRealPath("/");
//System.out.println("log4jdir:"+log4jdir);
System.setProperty(log4jdirkey, log4jdir);
}
}
web.xml配置:
<listener>
<listener-class>com.log4j.log4jlistener</listener-class>
</listener>
log4j.prtperties 配置:
log4j.appender.A1.File=${log4jdir}/WEB-INF/logs/app1.log
来解决。
Ⅳ log4j配置之后出现错误
步骤:
1、在Maven的porn.xml 文件中添加dependency如下。之后就会添加三个包。
Ⅵ 关于java读取jar包内log4j配置文件
一、Thread.currentThread().getContextClassLoader().getResource("resources/log4j.xml").getPath();
二、java.net.URLimUrl=getClass().getResource("resources/log4j.xml");
三、java.net.URLimUrl=getClass().getResource("/resources/log4j.xml");
四、//包名开始
Strings_xmlpath="ldg/resource/resources/log4j.xml";
InputStreamin=ClassLoader.getSystemResourceAsStream(s_xmlpath);
Ⅶ log4j在java的web项目中怎么用的,如何配置等等。。
在web.xml中添加配置:
<!-- 配置log4j配置文件的路径,可以是xml或 properties(此参数必须配)-->
下面使用了classpath 参数指定log4j.properties文件的位置,这样log4j的配置文件就不用非要放到src的下面:
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:config/log4j/log4j.properties</param-value>
</context-param>
使用spring的监听器,当应用启动时来读取log4j的配置文件
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
Ⅷ Java log4j 配置文件怎么写,可以输出log.info("")中的内容到指定目录的.log文件
log4j.rootLogger=info, ServerDailyRollingFile, stdout
log4j.appender.ServerDailyRollingFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ServerDailyRollingFile.DatePattern='.'yyyy-MM-dd
log4j.appender.ServerDailyRollingFile.File=/usr/logs/mylog.log
log4j.appender.ServerDailyRollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.ServerDailyRollingFile.layout.ConversionPattern=%d - %m%n
log4j.appender.ServerDailyRollingFile.Append=true
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} %p [%c] %m%n
Ⅸ java中如何使用log4j将记录的操作日志信息
主要是通过配置文件
1.1 Log4j 支持两种配置文件格式,一种是 XML 格式的文件,一种是 Java 特性文件 lg4j.properties (键 = 值)。
Logger 负责处理日志记录的大部分操作。
其语法为:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
2.1 level 是日志记录的优先级,分为 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 ALL
或者自定义的级别。
2.2Log4j 建议只使用四个级别,优先级从高到低分别是 ERROR 、 WARN 、 INFO 、 DEBUG
。
2.3通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了
INFO 级别,只有等于及高于这个级别的才进行处理,则应用程序中所有 DEBUG 级别的日志信息将不被打印出来。
2.4 ALL: 打印所有的日志,
OFF :关闭所有的日志输出。 appenderName 就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。
配置日志信息输出目的地 Appender 负责控制日志记录操作的输出。
3.1log4j.appender.appenderName = fully.qualified.name.of.appender.class
3.2log4j.appender.appenderName.option1 = value1
3.3log4j.appender.appenderName.optionN = valueN
Log4j 提供的 appender
4.1org.apache.log4j.ConsoleAppender (控制台),
4.2org.apache.log4j.FileAppender (文件),
4.3org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件),
4.4org.apache.log4j.RollingFileAppender
(文件大小到达指定尺寸的时候产生一个新的文件),可通过 log4j.appender.R.MaxFileSize=100KB
设置文件大小,还可通过 4.5log4j.appender.R.MaxBackupIndex=1 设置为保存一个备份文件。
4.6org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)
5.Layout
5.1org.apache.log4j.HTMLLayout (以 HTML 表格形式布局),
5.2org.apache.log4j.PatternLayout (可以灵活地指定布局模式),
5.3org.apache.log4j.SimpleLayout (包含日志信息的级别和信息字符串),
5.4org.apache.log4j.TTCCLayout (包含日志产生的时间、线程、类别等等信息) 6.格式化日志信息
Log4J 采用类似 C 语言中的 printf 函数的打印格式格式化日志信息,打印参数如下:
6.1%m 输出代码中指定的消息
6.2%p 输出优先级,即 DEBUG , INFO , WARN , ERROR , FATAL
6.3%r 输出自应用启动到输出该 log 信息耗费的毫秒数
6.4%c 输出所属的类目,通常就是所在类的全名
6.5%t 输出产生该日志事件的线程名
6.6%n 输出一个回车换行符, Windows 平台为 “rn” , Unix 平台为 “n”
6.7%d 输出日志时间点的日期或时间,默认格式为 ISO8601 ,也可以在其后指定格式,比如: %d{yyyy MMM dd HH:mm:ss,SSS} ,输出类似: 2002 年 10 月 18 日 22 : 10 : 28 , 921
6.8%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。 7. log4j.propertie 示例文件:
log4j.rootCategory=INFO, stdout,file
7.1 定义名为 stdout 的输出端的类型
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n
7.2定义名为 file 的输出端的类型为每天产生一个日志文件。
log4j.appender.file =org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=log.txt
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n
7.3指定 com.neusoft 包下的所有类的等级为 DEBUG 。可以把 com.neusoft 改为自己项目所用的包名。
log4j.logger.com.neusoft=DEBUG
7.4如果项目中没有配置 EHCache ,则配置以下两句为 ERROR 。
log4j.logger.com.opensymphony.oscache=ERROR
log4j.logger.net.sf.navigator=ERROR
8struts 配置
log4j.logger.org.apache.commons=ERROR
log4j.logger.org.apache.struts=WARN
8.1 displaytag 配置
log4j.logger.org.displaytag=ERROR
8.2 spring 配置
log4j.logger.org.springframework=DEBUG
8.3 ibatis 配置
log4j.logger.com.ibatis.db=WARN
8.4 hibernate 配置
log4j.logger.org.hibernate=DEBUG log4j.logger.org.apache.velocity=FATAL
log4j.logger.com.canoo.webtest=WARN