我通过这种方式创建日志文件:
global logger
logger = logging.getLogger("plus_dig_cname")
logger.setLevel(logging.DEBUG)
fh = logging.FileHandler( fdoc_log + "/plus_dig_cname.log" )
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
logger.addHandler(fh)
Run Code Online (Sandbox Code Playgroud)
当plus_dig_cname.log的大小大于300MB时,我用shell脚本处理它,主要过程是:
mv $LOG_DIR/$1 $LOG_DIR/$1.bk
[ $? -ne 0 ] && return 1
touch $LOG_DIR/$1
[ $? -ne 0 ] && return 1
chmod 666 $LOG_DIR/$1
[ $? -ne 0 ] && return 1
Run Code Online (Sandbox Code Playgroud)
只是它和它触摸一个新的.
问题是记录器不能在plus_dig_cname.log文件中包含任何内容.日志记录无法正常工作.
也许它可以通过以下方式解决:
with open( "plus_dig_cname.log", "w" ):
pass
Run Code Online (Sandbox Code Playgroud)
这种方式可以通过Python获取新的日志文件.但我想通过Bash获取新的日志文件.
那么,为什么在"mv touch chmod"之后日志记录无法工作?
谢谢
使用RotatingFileHandler为您处理此问题.
例如:
MAX_SIZE = 300 * 1024 * 1024
LOG_PATH = fdoc_log + "/plus_dig_cname.log"
fh = logging.handlers.RotatingFileHandler(LOG_PATH, maxBytes=MAX_SIZE, backupCount=5)
Run Code Online (Sandbox Code Playgroud)
这将创建5个备份,每个备份300MB.