import org.apache.log4j.Logger;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "LoggerServlet",urlPatterns = "/LoggerServlet")
public class LoggerServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int count=(int)request.getSession().getAttribute("count");
request.setCharacterEncoding("utf-8");
String userName =request.getParameter("userName");
Logger logger=Logger.getRootLogger();
System.out.println(userName+"_"+count);//控制台输出 输出日志在catalina中
logger.info(userName+"_"+count); //新的日志文件
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
<%--
Created by IntelliJ IDEA.
User: wxw
Date: 2018-11-14
Time: 下午 8:00
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path;
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Title</title>
<script type="text/javascript">
var basePath = '<%= basePath%>';
</script>
</head>
<body>
<% session.setAttribute("count",1);%>
<
<form action="<%=basePath%>/LoggerServlet" method="post">
<input type="text" name="userName"/>
<br/>
<input type="submit" value="提交">
</form>
</body>
</html>
# 全局配置 -> DEBUG(调试) -> INFO(信息) ->ERROR(错误)
log4j.rootLogger=DEBUG,stdout,file
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# 日志格式 p:日志级别 t:线程 m:信息 n:换行
log4j.appender.stdout.layout.ConversionPattern=%m%n
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=/home/hadoop/webapp.log
log4j.appender.file.append=true
log4j.appender.file.layout=org.apache.log4j.PatternLayout
Logger logger=Logger.getRootLogger();
然后将war 包传到tomcat 的webapp 中换成ROOT.war 之后开启tomcat ,会生成ROOT目录
logo4j中
全局配置 -> DEBUG(调试) -> INFO(信息) ->ERROR(错误)
DEBUG < INFO < WARN < ERROR < FATAL,分别用来指定这条日志信息的重要程度,明白这一点很重要,Log4j有一个规则:只输出级别不低于设定级别的日志信息,假设Loggers级别设定为INFO,则INFO、WARN、ERROR和FATAL级别的日志信息都会输出,而级别比INFO低的DEBUG则不会输出。
log4j.rootLogger=DEBUG,stdout,file
appende 允许把日志输出到不同的地方如控制台(Console)、文件(Files)等,可以根据天数或者文件大小产生新的文件,可以以流的形式发送到其它地方等等。
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
layout有时用户希望根据自己的喜好格式化自己的日志输出
org.apache.log4j.HTMLLayout(以HTML表格形式布局)
org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等信息)
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
日志格式 p:日志级别 t:线程 m:信息 n:换行
log4j.appender.stdout.layout.ConversionPattern=%m%n
输出到文件
log4j.appender.file=org.apache.log4j.FileAppender
输出文件路径
log4j.appender.file.File=/home/hadoop/webapp.log
文件从最后面添加
log4j.appender.file.append=true
log4j.appender.file.layout=org.apache.log4j.PatternLayout
linux 的网页能打开后 配置flume 监控文件
需要提前创建log 文件
cd $FLUME_HOME/conf
touch file-memory-logger.conf
vi file-memory-logger.conf
# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# Describe/configure the source
a1.sources.r1.type = exec
a1.sources.r1.command = tail -f /home/hadoop/webapp.log
# Describe the sink
a1.sinks.k1.type = logger
# Use a channel which buffers events in memory
a1.channels.c1.type = memory
# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
当然也可以监控tomcat 下的logs 的catalina.out 但是这个文件信息杂 ,直接用log4j 里面生成的文件好,只显示 logger.info(userName+"_"+count); 生成的字段
网友评论