BAE 3.0日志

来源:互联网 发布:windows和安卓平板 编辑:程序博客网 时间:2024/05/22 06:40

在BAE平台中,都提供了一种查询Container中临时日志的方式,其目的是为了方便用户快速的查询最近的日志,了解container的运行状态。但是这种日志又不想走日志服务,因为日志服务太重了,实时性相对差一些,还要改自己的代码。针对这些需求,BAE提供了一种临时的解决方案—本地日志。这种日志不保证存储时间,随着container的迁移和回收,都会造成日志的丢失,所以此类日志的定位是临时的、没有服务保证的、快速及时的一种解决方案。

日志打印方式

日志打印非常简单,使用语言提供的日志模块即可,下面以python为例

#-*- coding:utf-8 -*-import osimport sysimport loggingimport logging.configcwd = os.path.dirname(__file__)def app(environ, start_response):    status = '200 OK'    headers = [('Content-type', 'text/html')]    start_response(status, headers)        logging.config.fileConfig( "/home/bae/app/logging.conf" )    logging.info("This is a test message")        return "logging..."from bae.core.wsgi import WSGIApplicationapplication = WSGIApplication(app)

其中logging.conf文件放在根目录下,如下

[loggers]keys = root[handlers]keys=rotateFileHandler[formatters]keys=simpleFormatter[formatter_simpleFormatter]format = [%(asctime)s](%(levelname)s)%(name)s : %(message)s][logger_root]level=INFOhandlers=rotateFileHandler[handler_rotateFileHandler]class=handlers.RotatingFileHandlerlevel=INFOformatter=simpleFormatterargs=("/home/bae/log/user.log", 'a', 20971520, 5)




日志的清理

BAE每隔一段时间会清理用户的日志,主要有以下几种策略

  1. 日志存取路径,统一存储到 /home/bae/log下面,不要建立自文件夹和软连接
  2. 日志的切分,日志切分由用户自己指定,BAE查看日志是通过前缀名定位,后缀名自定义的方式

比如

User.log.1

User.log.2

就认为是同一种日志[user],查看日志总是会查看最新的

但是

User1.log

User2.log会被认为是两种日志[user1, user2]

2. 限制

每一大类的日志限制是100M,用户总日志大小限制是250M,超过限制就会被后台不定期清理

删除的策略一般是删除最老的日志,根据linux modify time判定

 

FAQ

1.    这会是BAE V3日志的最终形态嘛?

当然不会.

日志有两种,1)Debug,主要解决应用开发和部署期间的错误查看,不需要长期保存2)长期存储,需要长期保存,未来可能用来作为分析用,对日志的完整性要求更高。

本地日志的目标是为了即时调试,BAE后续会推出功能强大的多的分布式日志。

2.    为什么有这么多限制

本地日志,顾名思义就是存在本机上的日志,物理机的磁盘是有限制的,不可能给单个用户开很大的空间,而且我们认为250M已经足够用户做调试用了。

至于为什么要用户切分,这是考虑到不同的用户后缀使用习惯不同。而且在linux中,强行mv掉文件,有些不带reopen机制的日志库,无法正确处理mv事件。并且mv走会导致丢失部分日志。

3.    为什么不支持按照时间段查询

因为本地日志是不带schema的,也就是说BAE对用户日志格式不做任何假设,所以也没办法确认单条日志的时间点,因此不支持时间段查询

4.    为什么不支持关键字查询

关键字查询如果不做索引,理由类似于3,未来用户可以通过下载,在本地进行查询。分布式日志的查询会强大很多

5.    我的server日志看不到啊!

这个是因为以前申请的container,日志没有打到指定目录,新申请的container的都已经可以了

另外,请确认日志打印的目录为

/home/bae/log


http://godbae.duapp.com/?p=313


0 0
原创粉丝点击