日志服务简介
TAE日志服务为应用提供了标准的日志记录功能,接入后,可以通过控制台查询应用的历史日志,也可以查看应用的实时日志,为云环境下的开发调试和问题定位提供了便利。
使用说明
在应用的 CLASSPATH 根路径下(maven工程在src/main/resources下)按照以下格式编写 log4j.properties 文件:
log4j.rootLogger = INFO,taeAppender
log4j.appender.taeAppender=com.alibaba.appengine.api.log.appender.LogAppender
log4j.appender.taeAppender.File = ${catalina.base}/logs/app.log
log4j.appender.taeAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.taeAppender.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS}%-5p[%-c]%m%n
log4j.appender.taeAppender.Threshold=INFO
注:对象com.alibaba.appengine.api.log.appender.LogAppender在容器启动时会自动加载,用户无需关心此类的位置。
然后,用户通过log4j API打印的所有日志都会自动进行收集。
日志查看
本地日志
本地SDK环境下应用打印出的日志,读者可以在logs/app.log中进行查看(log4j.properties中的配置项log4j.appender.taeAppender.File = ${catalina.base}/logs/app.log起到的作用)。值得注意的是,如果同一份本地SDK启动了多个实例的话,${catalina.base}指向的是实例的临时目录而非安装目录。以
IDEA集成的SDK启动为例,其临时目录的路径可在IDEA控制台中查看,如下图示:
线上日志
所有在本地app.log中出现的日志,在应用完成线上部署后,都可以在控制台的日志查询->应用日志和实时日志->应用日志中进行查看。具体可参见
查询应用日志和
查询实时日志等相关文章。
日志服务使用示例
本节将向读者展示如何通过TAE SDK开发并运行一个接入了日志服务的应用。
结果演示
访问127.0.0.1:8080/LogServiceDemo.do,将返回:
>> Begin Log Service test.
You can see log content on TAE console!
查看本地容器log目录,将会发现生成了app.log文件,打开后可以看到这样三条记录:
2014-06-26 15:25:28,245WARN [tae.demo.services.LogServiceDemo]log warn: Hello TAE!
2014-06-26 15:25:28,245INFO [tae.demo.services.LogServiceDemo]log info: Hello TAE!
2014-06-26 15:25:28,245ERROR[tae.demo.services.LogServiceDemo]log error: Hello TAE!
准备工作
- 预留大约15分钟无干扰时间。
- 安装配置TAE SDK,开发语言设置为Java(即app.language =Java)参考链接
如何完成?
读者可以选择从头开始工程搭建、开发和部署,或者略过这些步骤,选择直接下载源码、打包部署来完成本篇向导。
- 选择从头开始的读者,也请下载应用源码与war包,以便参考,并跳到下一节——工程创建。
- 选择直接部署的读者,请执行以下步骤:
2、将该tae-java-log-1.0.0.war文件拷贝到已在本地解压的容器webapps目录下,并重命名为ROOT.war。
3、运行bin/startup.sh(bat)启动容器。
4、容器启动成功后,可以根据结果演示一节进行验证。
开发实战
1、创建User类作为POJO数据模型,完整示例参见:tae-java-hello/src/main/java/tae/demo/model/User.java
2、创建LogServiceDemo Servlet,通过log4j打印日志
resp.getWriter().println(">> Begin Log Service test!");
// Test Logging
logger.debug("log debug: Hello TAE!");
logger.warn("log warn: Hello TAE!");
logger.info("log info: Hello TAE!");
logger.error("log error: Hello TAE!");
// Test std output
System.out.println("system out: Hello TAE!");
System.err.println("system err: Hello TAE!");
resp.getWriter().println("You can see log content on TAE console!");
完整示例参见:tae-java-hello/src/main/java/tae/demo/services/LogServiceDemo.java
3、在web.xml中添加以下配置:
<servlet>
<servlet-name>LogServiceDemo</servlet-name>
<servlet-class>tae.demo.services.LogServiceDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LogServiceDemo</servlet-name>
<url-pattern>/LogServiceDemo.do</url-pattern>
</servlet-mapping>
4、编译打包:
使用maven的开发在工程目录下执行下面的命令,编译打包:
mvn clean install
其他开发者,利用自己开发工具的打包功能,编译打包
5、将生成的war包拷贝到本地容器webapps目录,并重命名为ROOT.war。
6、执行bin/startup.bat(sh)。
7、访问127.0.0.1:8080/LogServiceDemo.do,将返回:
>> Begin Log Service test.
You can see log content on TAE console!
查看本地容器log目录,将会发现生成了app.log文件,打开后可以看到这样三条记录:
2014-06-26 15:25:28,245WARN [tae.demo.services.LogServiceDemo]log warn: Hello TAE!
2014-06-26 15:25:28,245INFO [tae.demo.services.LogServiceDemo]log info: Hello TAE!
2014-06-26 15:25:28,245ERROR[tae.demo.services.LogServiceDemo]log error: Hello TAE!
FAQ
关于此文档暂时还没有FAQ