我正在Servlet 3.0和Tomcat中做一个简单的演示项目
我接受Postman的JSON请求并提供JSON响应。
现在我也想登录我的项目。
所以我已经使用log4j2
使用过的瓶子:-
log4j-1.2.12.jar,
jackson-databind-2.6.3.jar,
jackson-core-2.6.3.jar
Servlet代码:-
@WebServlet("/StatusServlet")
public class TestingServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
Logger logger = Logger.getLogger(TestingServlet.class);
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
BasicConfigurator.configure();
String requestData = request.getReader().lines().collect(Collectors.joining());
System.out.println(requestData);
// 2. initiate jackson mapper
ObjectMapper mapper = new ObjectMapper();
TestingPojo pojo = mapper.readValue(requestData, TestingPojo.class);
logger.info("status "+pojo.getStatus());
PrintWriter out = response.getWriter();
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
mapper.writeValue(out, pojo.getStatus());
out.flush();
}
我的项目目录:-
Webservice
|-src
|- com
|-test
TestingPojo.java
TestingServlet.java
log4j2.xml
我的log4j.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<Configuration status="TRACE">
<Properties>
<Property name="logPath">/tmp</Property>
<!-- <Property name="patternInfo">%d{dd/MMM/yyyy HH:mm:ss,SSS} %F : %C
: %M() : THREAD[%t] : LINE[%L] : [%m]%n</Property> -->
<Property name="patternInfo">%d{dd/MMM/yyyy HH:mm:ss,SSS} %m%n</Property>
</Properties>
<Appenders>
<RollingFile name="RollingFile" fileName="${logPath}/i-am.log"
filePattern="${logPath}/webservice-%d{yyyy-MM-dd}-%i.log">
<PatternLayout pattern="${patternInfo}" />
<Policies>
<SizeBasedTriggeringPolicy size="10MB" />
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />
</Policies>
<!-- <DefaultRolloverStrategy max="10 MB"/> -->
</RollingFile>
</Appenders>
<Loggers>
<Logger name="root" level="debug" additivity="false">
<appender-ref ref="RollingFile" level="debug" />
</Logger>
<Root level="TRACE" additivity="false">
<AppenderRef ref="RollingFile" />
</Root>
</Loggers>
</Configuration>
当我在eclipse中运行代码时,会以模式格式在控制台中获取日志。
但是,当我在远程服务器中部署代码时,提到的Rolling File Appender路径中没有日志。没有文件被创建。
我的配置有问题吗?
我也使用了Basic Configurator.configure(),还有其他方法吗?
答案 0 :(得分:0)
我为您找到了同一篇文章。(您需要更改log4j2.xml的目录)
点击here!
有两种解释方式,
这不是OP的问题,但我希望您能提醒一下。
请考虑添加控制台Appender,很高兴在您的IDE控制台中看到它。
请考虑重新使用ObjectMapper: Jackson-Performance, javadoc