在編寫代碼的時候須要隨時查看工做日誌,查看工做日誌的好處就是隨時能檢查出錯誤。因此我通常就須要在編寫代碼的前期添加工做日誌,以便更好的查看相關錯誤輸出。css
以一個springmvc小demo爲例子 主要是給controller類加一個日誌顯示 前端
一、先引進各個配置文件 主要把log4j.properties加進來 web.xmljava
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <welcome-file-list> <welcome-file>/</welcome-file> <!--必須寫的 controller對/進行映射 使其直接訪問WEB-INF下的內容--> </welcome-file-list> <!-- 加載spring容器 在web.xml裏面引入log4j--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:log4j.properties,applicationContext.xml</param-value> </context-param> <!--<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>--> <servlet> <servlet-name>ContextLoaderListener</servlet-name> <servlet-class>org.springframework.web.context.ContextLoaderListener</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <!-- springmvc的前端控制器 --> <servlet> <servlet-name>dispatcher-servlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- contextConfigLocation不是必須的, 若是不配置contextConfigLocation, springmvc的配置文件默認在:WEB-INF/servlet的name+"-servlet.xml" --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:dispatcher-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher-servlet</servlet-name> <!-- /:會攔截全部請求包括靜態資源。須要在springmvc.xml中添加靜態資源的映射。 全部的請求都會被攔截 交由springmvc去處理 可是本地的靜態文件是不用去處理攔截的(css js jsp)--> <url-pattern>/</url-pattern> </servlet-mapping> <!-- <!– 資源映射 url請求中只要是帶css/** 或者 js/**這種格式的 直接映射到WEB-INF/css或者js中–> 下面兩行配置在springmvc.xml中--> <!-- 解決post亂碼 --> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
2.具體含義解決都已經標註好 log4j.propertiesweb
### 設置 寫入顯示日誌的級別 通常是INfo 也能夠顯示debug error等級別 控制檯輸出和文件輸出### log4j.rootLogger = INFO,Console,File ### 控制檯日誌### 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 = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n ### 普通文件日誌 ### log4j.appender.File = org.apache.log4j.RollingFileAppender log4j.appender.File.File = D:/LocalLog/info.log log4j.appender.File.MaxFileSize = 10MB ### 輸出日誌 若是換成debug表示輸出debug以上的級別日誌 ### log4j.appender.File.Threshold = ALL log4j.appender.File.layout = org.apache.log4j.PatternLayout log4j.appender.File.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
3.spring
package com.springmvc.controller;/** * Created by hoobey on 2017/12/10. */ import org.apache.log4j.Logger; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; /** * All rights Reserved, Designed By www.hoobey.cn * * @Description: 實現頁面的跳轉(用一句話描述該文件作什麼) * Create by hoobey * User:user * Date:2017/12/10 * Time:下午 06:04 * 注意:本內容僅限於本公司內部傳閱,禁止外泄以及用於其餘的商業目的 */ @Controller public class ViewController { private Logger log = Logger.getLogger(ViewController.class);//輸出Log日誌 /** * 打開首頁 */ @RequestMapping("/") public String showIndex() { return "index"; } @RequestMapping("/view") public ModelAndView view(HttpServletRequest request){ // 只須要將想要訪問的頁面放在path裏面,經過url傳進來就好了 http://localhost:8080/項目名/view?path=success String path = request.getParameter("path") +""; //頁面傳一個 ModelAndView mav = new ModelAndView(); //存儲項目路徑 前端界面使用的話直接EL表達式傳過去 ${conetxtPath} String contextPath = request.getContextPath(); mav.addObject("conetextPath",contextPath); System.out.println("項目路徑是:"+contextPath); mav.setViewName(path); return mav; } /*WEB-INF目錄下的任何資源都是沒法直接經過瀏覽器的url地址去訪問的,保證了安全性。這也是咱們爲何把頁面都放在該目錄下的緣由 / 表示首先訪問的頁面是index.jsp */ }
tomcat啓動訪問項目後 在控制檯下看到 固然在log4j.properties下能夠設置顯示的等級 info error bug等 也能夠配置輸出到本地 下面會進行大體展現apache
配置日誌輸出到本地:瀏覽器
### 設置### log4j.rootLogger = debug,stdout,D,E ### 輸出信息到控制擡 ### log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n ### 輸出DEBUG 級別以上的日誌到文件D:/LocalLog/debug.log ### log4j.appender.D = org.apache.log4j.FileAppender log4j.appender.D.File = D:/LocalLog/debug.log #true表示消息增長到指定文件,false則將消息 log4j.appender.D.Append = true 覆蓋指定的文件內容中,默認是true #全局的過濾器,把低於DEBUGDE的信息過濾不顯示出來,這裏設置debug沒意義 log4j.appender.D.Threshold = DEBUG #指定佈局模式 log4j.appender.D.layout = org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n ### 輸出ERROR 級別以上的日誌到文件F://logs/error.log ### log4j.appender.E = org.apache.log4j.FileAppender log4j.appender.E.File = D://LocalLog/error.log log4j.appender.E.Append = true log4j.appender.E.Threshold = ERROR log4j.appender.E.layout = org.apache.log4j.PatternLayout log4j.appender.E.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n