1,pom.xml下jar包引入配置

2,log4j.properties配置
log4j.rootLogger=WARN,stdout,logDailyFile,logDB
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logDailyFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logDailyFile.File=${jeedw.webapp.root}/WEB-INF/logs/h5.log
log4j.appender.logDailyFile.DatePattern=.yyyy-MM-dd
log4j.appender.logDailyFile.layout=org.apache.log4j.PatternLayout
log4j.appender.logDailyFile.layout.ConversionPattern=%d %p [%c] wang- <%m>%n
log4j.appender.logDailyFile.Encoding =UTF-8
###----------------- appender:数据库配置 -----------------
log4j.appender.logDB= org.apache.log4j.jdbc.JDBCAppender
log4j.appender.logDB.Driver= com.mysql.jdbc.Driver
log4j.appender.logDB.URL= jdbc:mysql://10.1.84.232:3306/shiro?useUnicode=true&characterEncoding=utf-8 编码格式 并请用&符,不要用&
log4j.appender.logDB.User= root
log4j.appender.logDB.Password= 52dj1314
log4j.appender.logDB.sql=insert into logs_info (host,user_name,create_time,logger,level,message) values ("%X{host}","%X{name}","%d{yyyy-MM-dd HH:mm:ss}","%c","%p","%m")
log4j.appender.logDB.layout= org.apache.log4j.PatternLayout
3,spring-config-shiro.xml配置

4,web.xml配置

5,LoginLogsFilter类
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import org.apache.log4j.MDC;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.Subject;
public class LoginLogsFilter implements Filter{
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
Subject subject = SecurityUtils.getSubject();
Session session = subject.getSession();
String host = session.getHost();
MDC.put("name", (SecurityUtils.getSubject().getPrincipal() != null) ? SecurityUtils.getSubject().getPrincipal() : "");
MDC.put("host", host !=null ? host : "");
try {
chain.doFilter(request, response);
} finally {
MDC.remove("name");
}
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void destroy() {
}
}
6,调用
private static final Logger logger = Logger.getLogger(IndexController.class);
logger.error("登录失败");
网友评论