当指定了输出文件后log日志并没有按照追加的形式记录,而是不断的被覆盖掉了,而他的父类FileOutputter反而能按追加的形式产生文件。
看了一下源码,少了对已有文件的处理,例如日志的路径、名称等
1.0.5
require "log4r/outputter/fileoutputter"
require "log4r/staticlogger"
module Log4r
# Additional hash arguments are:
#
# [<tt>:dirname</tt>] Directory of the log file
# [<tt>:date_pattern</tt>] Time.strftime format string (default is "%
class DateFileOutputter < FileOutputter
DEFAULT_DATE_FMT = "%Y-%m-%d"
def initialize(_name, hash={})
@DatePattern = (hash[:date_pattern] or hash['date_pattern'] or
DEFAULT_DATE_FMT)
@DateStamp = Time.now.strftime( @DatePattern);
_dirname = (hash[:dirname] or hash['dirname'])
# hash[:dirname] masks hash[:filename]
if _dirname
if not FileTest.directory?( _dirname)
raise StandardError, "'#{_dirname}' must be a valid directory",
end
@filebase = File.basename( $0, '.rb') + ".log"
else
@filebase = File.basename((hash[:filename] or hash['filename'] or
end
hash['filename'] = File.join(_dirname,
@filebase.sub(/(\.\w*)$/, "_#{@DateStamp}" + '\1'))
super(_name, hash)
end
#######
private
#######
# perform the write
def write(data)
change if requiresChange
super
end
# construct a new filename from the DateStamp
def makeNewFilename
@DateStamp = Time.now.strftime( @DatePattern);
@filename = File.join(File.dirname(@filename),
@filebase.sub(/(\.\w*)$/, "_#{@DateStamp}" + '\1'))
end
# does the file require a change?
def requiresChange
_DateStamp = Time.now.strftime( @DatePattern);
if not _DateStamp == @DateStamp
@DateStamp = _DateStamp
return true
end
false
end
# change the file
def change
begin
@out.close
rescue
Logger.log_internal {
"DateFileOutputter '#{@name}' could not close #{@filename}"
}
end
makeNewFilename
@out = File.new(@filename, (@trunc ? "w" : "a"))
Logger.log_internal {
"DateFileOutputter '#{@name}' now writing to #{@filename}"
}
end
end
end
1.1.7
require "log4r/outputter/fileoutputter"
require "log4r/staticlogger"
module Log4r
# Additional hash arguments are:
#
# [<tt>:dirname</tt>] Directory of the log file
# [<tt>:date_pattern</tt>] Time.strftime format string (default is "%Y-%m-%d")
class DateFileOutputter < FileOutputter
DEFAULT_DATE_FMT = "%Y-%m-%d"
def initialize(_name, hash={})
@DatePattern = (hash[:date_pattern] or hash['date_pattern'] or
DEFAULT_DATE_FMT)
@DateStamp = Time.now.strftime( @DatePattern);
_dirname = (hash[:dirname] or hash['dirname'])
# hash[:dirname] masks hash[:filename]
if _dirname
if not FileTest.directory?( _dirname)
raise StandardError, "'#{_dirname}' must be a valid directory", caller
end
end
_filename = (hash[:filename] or hash['filename'])
if _filename.nil?
@filebase = File.basename( $0, '.rb') + ".log"
else
@filebase = File.basename((hash[:filename] or hash['filename'] or ""))
end
# Get rid of the 'nil' in the path
path = [_dirname, @filebase.sub(/(\.\w*)$/, "_#{@DateStamp}" + '\1')].compact
hash[:filename] = hash['filename'] = File.join(path)
super(_name, hash)
end
#######
private
#######
# perform the write
def write(data)
change if requiresChange
super
end
# construct a new filename from the DateStamp
def makeNewFilename
@DateStamp = Time.now.strftime( @DatePattern);
@filename = File.join(File.dirname(@filename),
@filebase.sub(/(\.\w*)$/, "_#{@DateStamp}" + '\1'))
end
# does the file require a change?
def requiresChange
_DateStamp = Time.now.strftime( @DatePattern);
if not _DateStamp == @DateStamp
@DateStamp = _DateStamp
return true
end
false
end
# change the file
def change
begin
@out.close
rescue
Logger.log_internal {
"DateFileOutputter '#{@name}' could not close #{@filename}"
}
end
makeNewFilename
@out = File.new(@filename, (@trunc ? "w" : "a"))
Logger.log_internal {
"DateFileOutputter '#{@name}' now writing to #{@filename}"
}
end
end
end
分享到:
相关推荐
资源分类:Python库 所属语言:Python 资源全名:django-rlog-1.0.5.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
总的来说,`esp32-1.0.5.zip`是一个重要的资源包,它为ESP32的开发提供了必要的软件基础,使开发者能够利用ESP32的强大功能,开发出各种创新的物联网和嵌入式应用。无论是初学者还是经验丰富的开发者,都能从中受益...
"cpdetector_1.0.5.zip" 是一个压缩包文件,其中包含了 "cpdetector_1.0.5.jar" 这个Java可执行文件。从这个标题和描述,我们可以推测"cpdetector"是一个软件工具,可能用于检测或分析某种特定的计算机系统组件或...
描述中提到它是“最新”的,虽然现在可能有更高级的版本,但在当时发布时,1.0.5版确是Windows用户最新的选择,并且它支持中文界面,这对于中文用户来说非常友好。 Arduino IDE是开源的,这意味着它的源代码可供...
标题“jodeplugin_1.0.5.zip”暗示我们正在处理一个软件插件的压缩包,版本号为1.0.5。这个插件很可能用于扩展或增强某个应用程序的功能,而“jode”可能是该插件的名字或者是与其相关的开发平台或框架。描述中的...
jxls1.0.5是该工具的一个版本,它提供了一系列增强功能和改进,帮助开发者更便捷地处理Excel数据的导出和导入。 ### 1. jxls-core-1.0.5.jar 这是jxls的核心组件,包含了处理Excel模板和数据的主要类和接口。它...
PC中最强的J2ME虚拟机 2012元月又出更新了 1.0.5 [2012.01.02] Fixed several bug chinese language pack details of the changes
"一键安装安卓驱动_V1.0.5.zip" 是一个专门为简化安卓驱动安装过程而设计的工具,尤其对于新手用户来说,这是一个非常实用的解决方案。 首先,我们要理解驱动程序的必要性。在开发环境或进行设备调试时,开发者通常...
在"vlc-1.0.5.zip"中,有两个主要文件:`vlc-1.0.5.exe`是VLC的安装程序,用户可以通过运行这个程序在电脑上安装VLC播放器;`readme.txt`通常包含了关于软件的详细信息,如安装步骤、使用指南、版本更新内容和已知...
vlc-1.0.5-intel.dmgvlc-1.0.5-intel 万能播放软件vlc-1.0.5-intel.dmgvlc-1.0.5-intel 万能播放软件vlc-1.0.5-intel.dmgvlc-1.0.5-intel 万能播放软件
VLC播放器1.0.5 安装版 提供给可以上CSDN但是不能上外网的朋友
而`avrdude-GUI 1.0.5`则是`avrdude`的一个图形化界面扩展,为用户提供了更为直观和便捷的操作体验。 `avrdude`本身是一个开源的命令行工具,主要用于编程AVR微控制器系列,这些微控制器在许多Arduino板上都有使用...
bcdautofix_v1.0.5是一款专用于修复多系统启动项和恢复原始系统开机画面的工具。在深入理解这个工具之前,我们首先要了解一些基础概念。 **启动配置数据(BCD)** BCD(Boot Configuration Data)是Windows Vista及...
版本1.0.5是这个强大工具包的一个稳定版本,由Wes McKinney领导的Pandas开发团队在2020年6月17日发布。Pandas的出现极大地简化了数据科学家和分析师的工作,它提供了高效的数据结构和数据分析方法,使得数据清洗、...
ezmorph-1.0.5.jar java
在2013年1月6日,p0sixspwn的1.0.5版本发布,专门为MAC用户提供了一个简单易用的界面,帮助用户绕过苹果的软件限制,打开他们的iOS设备的大门。 越狱是指通过特殊手段解除苹果对其设备的严格控制,允许用户安装非...
标题中的“evasi0n 7 win 1.0.5”指的是一个针对iOS设备的越狱工具,特别设计用于Windows操作系统。evasi0n是著名的越狱团队开发的一系列越狱软件之一,而这个版本(1.0.5)是针对iOS 7系统的一个更新。 描述中提到...
在1.0.5版本的更新中,可能包含了对之前版本的bug修复、性能优化或新增的外设支持。对于开发者而言,及时更新到最新版本的DFP,可以确保项目利用到最新的功能,并且避免因已知问题带来的困扰。 在使用Keil.STM32F1...
PDF Renderer 1.0.5 是一个专门用于解析PDF文档的Java库,它提供了一种在Java应用程序中处理和显示PDF内容的方式。这个名为“pdf_renderer-1.0.5.jar”的文件是一个JAR(Java Archive)包,它是Java平台上的可执行...
这个器件包的全称是Keil.STM32F1xx_DFP.1.0.5.pack,它包含了STM32F1系列处理器的详细描述、库函数、启动代码、调试配置等必要元素,使得开发者能够在MDK5环境下顺利地进行STM32F1芯片的程序设计和调试。 STM32F1...