简单的Log j使用只需要导入下面的包就可以了// import log j packagesimport apache log j Logger然后你需要在类的开头写上下面一句private final static Logger log =Logger getLogger(ClassName class)//注意这里写的是当前类的类名 这样你就有了一个
日志对象叫做 log 这个log有以下集中用法()//一般
信息log debug()//调试信息log error()//错误信息log warn()//警告信息log fatal()//致命错误信息上面列出的就是所谓log j的输出级别 log j建议只使用 个级别 它们从上到下分别为ERROR WARN INFO DEBUG 假设你定义的级别是info 那么error和warn的日志可以显示而比他低的debug信息就不显示了 知道了上面的内容还不够 要想很好的使用log j你还需要配置log j的环境 因为每个log都可以通过配置它的属性
文件来达到控制日志输出的格式的目的 下面我给出一个在weblogic下使用log j的配置过程 首先给出这个配置文件的完整信息 #log j rootLogger=INFO A R //这一句指定了日志输出的级别为info A 和R分别代表日志输出到什么地方 log j category hybl_wshabcm=debug A R //这一句指定了日志具体输出哪个包的信息 以及输出位置log j appender A = apache log j ConsoleAppender //这里指定了日志输出的第一个位置A 是控制台ConsoleAppender/**其中 Log j提供的appender有以下几种 * apache log j ConsoleAppender(控制台) * apache log j FileAppender(文件) * apache log j DailyRollingFileAppender(每天产生一个日志文件) * apache log j RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件) * apache log j WriterAppender(将日志信息以流格式发送到任意指定的地方)**/log j appender A layout= apache log j PatternLayout //指定A 的布局模式/**其中 Log j提供的layout有以下几种 × apache log j HTMLLayout(以HTML表格形式布局) * apache log j PatternLayout(可以灵活地指定布局模式) * apache log j SimpleLayout(包含日志信息的级别和信息字符串) * apache log j TTCCLayout(包含日志产生的时间 线程 类别等等信息)*/log j appender A layout ConversionPattern=% d{yyyy MM dd HH:mm:ss SSS} [%c] [%p] %m%n //指定日志的输出格式log j appender R= apache log j RollingFileAppender //指定以文件的方式输出日志log j appender R File=c:/l //文件位置log j appender R MaxFileSize= KB //文件最大尺寸log j appender R MaxBackupIndex= //备份数log j appender R layout= apache log j HTMLLayout //文件的格式为Html格式#log j appender R layout= apache log j PatternLayout log j appender R layout ConversionPattern=%d{yyyy MM dd HH:mm:ss SSS} [%t] [%c] [%p] %m%n有了上面的这个文件我们还要在weblogic启动的时候通过一个类加载这个文件 可以使用下面的方式 加载配置文件的Servlet package hybl_wshabcm serveletimport java io Fileimport java io LineNumberReaderimport java io FileReaderimport java io FileNotFoundExceptionimport java io IOExceptionimport java util Vectorimport java sql Driverimport java sql DriverManager// import servlet packagesimport javax servlet HttpServletimport javax servlet ServletConfigimport javax servlet ServletException// import log j packagesimport apache log j Loggerimport apache log j PropertyConfiguratorpublic class SetupServlet extends HttpServlet{public void init(ServletConfig config) throws ServletException{super init(config)// first thing to do is to set up the Driver that we might be using// in case of JDBCAppendertry{Driver d =(Driver)(Class forName( gjt mm mysql Driver ) newInstance())DriverManager registerDriver(d)//加载JDBC驱动程序 当准备将日志记录到数据库的时候可以使用}catch(Exception e){ System err println(e)}// next load up the properties//启动时从web xml中获得配置文件的信息String props = config getInitParameter( props )if(props == null || props length() == ||!(new File(props)) isFile()){System err println( ERROR: Cannot read the configuration file + Please check the path of the config init param in web xml )throw new ServletException()}}public void destroy(){super destroy()}} web xml文件的部署 上面的这个Servlet在服务器启动的时候将一些初始化信息加载 那么如何在weblogic启动的时候将这个类也加载呢?看一个例子setup hybl_wshabcm servelet SetupServlet//启动时装载的类 props/WEB INF/log j properties//部署文件的位置 lishixinzhi/Article/program/Java/ky/201311/11169
工作中由于疏忽,在生产环境忘记将日志级别提高导致系统性能下降了90%。
那么我们分别来对比debug级别和info级别对性能的影响。
本地tomcat8.5
java7
jmeter
线程500
思路:
1.log4j的配置文件支持System Property的环境变量的获取,如user home
2.通过ServletContext可以获取到集群中每个server name
3.在不同的server启动时将不同server name的加载到System Property
4.在配置文件中增加一个${WebAppClusterServer}的参数,拼合server_name+logfile_name
5.配置文件的定义:
**************************************************
*logpath=e:/${WebSphereAppHost}_
*log4j.appender.logfile.File=${logpath}test.log
**************************************************
评论列表(0条)