`
liltos
  • 浏览: 7739 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

ruby logger

    博客分类:
  • RoR
阅读更多

没有Java里的log4j那样的组件,调试程序的时候很难受,模仿Log4j的使用方法写的一个Ruby logger:

配置文件:

dev:
  level: debug
  stdout: 1
  file: ./dev.log
  roll_type: file_size
  roll_param: 500K          # support K/M 

pro:
  level: info
  stdout: 1
  file: ./pro.log
  roll_type: daily
  roll_param:               # if use daily, this param should be null

default: pro

比较粗糙,自己感觉是差不多够当下用就可以了。

配置文件的顶级keys是 dev, pro, ..., default,default的值应该是前面的某一个
stdout 为 1 表示会向终端输出,file没什么好说的。 roll_type 类似于 log4j 里的 roll file type(大概是这名字),这个值设置为 daily 的时候,下面的roll_param是不用填的,而把type设置为file size 的话,param 就需要填了,程序没有写默认值,这个值支持以K或者M作计量单位。
default 这个东东是,logger会自行创建一个全局变量:@@log,这个变量对应的配置,就是default后的那个。

 

 

打印出来的消息格式:

//这个是普通的debug消息,也有配合了 active_record-2.2.2 运行时 ar 产生的 sql 消息。
DEBUG 09-06-10 13:04:56 my_logger.rb:151: debug msg.
DEBUG 09-06-10 13:04:57 abstract_adapter.rb:189:in `log_info':   Lang Load (0.1ms)   SELECT * FROM `langs` WHERE (`langs`.`id` = 88) 

// 这个是带异常的消息:
ERROR 09-06-10 13:37:08 my_logger.rb:153: this is the error --asnvzxjvasjfs--:  
Connection refused - connect(2)    /usr/lib/ruby/1.8/net/http.rb:560:in `initialize'
    /usr/lib/ruby/1.8/net/http.rb:560:in `open'
    /usr/lib/ruby/1.8/net/http.rb:560:in `connect'
    /usr/lib/ruby/1.8/timeout.rb:53:in `timeout'
    /usr/lib/ruby/1.8/timeout.rb:93:in `timeout'
    /usr/lib/ruby/1.8/net/http.rb:560:in `connect'
    /usr/lib/ruby/1.8/net/http.rb:553:in `do_start'
    /usr/lib/ruby/1.8/net/http.rb:542:in `start'
    /usr/lib/ruby/1.8/net/http.rb:1035:in `request'
    /usr/lib/ruby/1.8/net/http.rb:845:in `post'
    my_logger.rb:151

使用方式和log4j的完全相同: log.debug(msg); log.error(msg, e)

 

 

使用方式:

  1. my_logger.rb 的 130 行左右,require 'yaml' 附近,写的程序是读取配置文件的,这个根据应用,需要 **定制 ** 配置文件路径
  2. 配置yml里的logger时,假定配置了一个名为 dblog 的logger,在程序里可以用 MyLogger.get("dblog") 的方法取得 logger
  3. 配合 rails 使用的话, MyLogger这个类里面可能需要添加更多的方法

分享到:
评论

相关推荐

    logstash-logger:编写logstash事件的Ruby logger

    LogStashLogger LogStashLogger扩展了Ruby的Logger类,以直接登录到 。 它支持以logstash JSON格式写入各种输出。 由于Logstash可以直接接收结构化数据,因此这是对写入文件或syslog的改进。产品特点可以通过UDP或...

    Ruby-Yell你的可扩展日志库

    Ruby-Yell是一个专门为Ruby开发者设计的可扩展日志库,它的全名是“Your Extensible Logging Library”,简称Yell。这个库旨在提供一个强大的、灵活的解决方案,用于处理应用程序中的日志记录需求,以替代传统的Ruby...

    test_logger1.rar_Logger wat_ruby _watir_watir ruby_watir-webdriv

    标题中的“test_logger1.rar_Logger wat_ruby _watir_watir ruby_watir-webdriver”揭示了这个压缩包文件的内容。首先,“test_logger1”可能是一个测试项目或者测试脚本的名称,而“Logger”则指的是Ruby内置的日志...

    logging:基于Java的log4j库的设计,可在Ruby程序中使用的灵活日志记录库

    本示例将记录器配置为以类似于核心ruby Logger类的格式输出消息。 仅记录警告或更高级别的日志消息。 require 'logging' logger = Logging . logger ( STDOUT ) logger . level = :warn logger . debug "this debug...

    fluent-logger-ruby, 用于Fluentd的结构化记录器( ruby ).zip

    fluent-logger-ruby, 用于Fluentd的结构化记录器( ruby ) 录音机 结构化事件记录器示例简单require 'fluent-logger'log = Fluent::Logger::FluentLogger.new(nil, :host => 'localhost',

    timber-ruby::evergreen_tree:轻松进行出色的Ruby采伐

    :evergreen_tree: 木材-简化... 公开与Ruby Logger相同的API。 高性能,轻巧和周到的设计。 支持结构化日志记录。 支持上下文。 自动上下文捕获。 与流行的第三方库(例如Rails和Rack)集成。 开始使用 ••••

    mono_logger:Ruby 2.0的无锁记录器

    MonoLogger Ruby的stdlib Logger将所有IO包装为互斥体。 Ruby 2.0不允许您在陷阱处理程序中请求锁定,因为这可能会导致死锁。 该gem通过为您提供无锁记录器类来解决此问题。 如果您曾经看过log writing failed. can'...

    dry-container:一个用Ruby实现的简单,可配置的对象容器

    《干容器:Ruby实现的简单可配置对象容器详解》 在Ruby编程领域,"dry-container"是一个备受关注的库,它提供了一种简洁且可配置的方式来管理对象的依赖和注入。这个库的设计理念是使代码更加干燥(DRY,Don't ...

    node-logger:一个简单的日志库,结合了Ruby的logger.rb和browser-js console.log()的简单API

    节点记录器概括一个简单的日志库,结合了Ruby的logger.rb和browser-js console.log()的简单API用法记录器按特定顺序具有5个不同级别的记录: 'fatal', 'error', 'warn', 'info', 'debug'这些日志级别中的每一个在...

    Ruby-Logging一个用在Ruby程序中灵活日志库

    Ruby-Logging库是一个在Ruby编程语言中广泛使用的日志处理工具,它借鉴了Java的log4j库的设计理念,提供了一种灵活、可扩展的方式来记录应用程序的运行信息。这个库的核心目标是帮助开发者轻松地控制日志输出的级别...

    lincoln_logger:Ruby的简单Logger包装器

    "lincoln_logger"是一个简单的Logger包装器,它旨在为Ruby的标准库`Logger`类提供额外的功能或更友好的接口,使得日志管理更加便捷。 Ruby的内置`Logger`类是用于日志记录的基础工具,它可以记录不同级别的消息,...

    chrome Logger浏览器调试插件

    Ruby - https://github.com/cookrn/chrome_logger Node.js https://github.com/olahol/express-chrome-logger https://github.com/yannickcr/node-chromelogger .NET - https://github.com/ChrisMissal/chromelogger...

    log

    1. **Ruby Logger类**:Ruby标准库提供了一个名为`Logger`的模块,它包含了创建和管理日志的基本方法。例如,你可以通过`new`方法创建一个logger实例,设置日志级别,如`DEBUG`、`INFO`、`WARN`、`ERROR`和`FATAL`,...

    Ruby-Scrolls简单的日志记录

    Ruby-Scrolls是一个轻量级的日志记录库,旨在为Ruby开发者提供简单、直观的接口来管理和记录应用程序的运行情况。日志记录是任何软件系统的重要组成部分,它可以帮助开发者跟踪程序运行状态,诊断错误,以及在必要时...

    semantic_logger:Semantic Logger是功能丰富的日志记录框架,可替代现有的Ruby&Rails记录器

    语义记录器 Semantic Logger是功能丰富的日志记录框架,可以替代现有的Ruby&Rails记录器。文献资料升级到语义记录器v4.4 对于某些派生框架,有必要在派生后调用reopen 。 使用v4.4,不再需要Ruby 2.5崩溃的解决方法...

    Ruby-HttpLogHTTP请求日志输出

    在这里,`Rails.logger`是日志记录的目标,你可以根据需要替换为自己的Logger实例。`:silence => false`表示开启日志记录,如果设置为`true`则会关闭日志输出。 HttpLog库支持记录各种HTTP客户端库的请求,如...

    fluent-logger-ruby:Fluentd(Ruby)的结构化记录器

    gem 'fluent-logger' 然后执行: $ bundle install 或自己安装为: $ gem install fluent-logger 例子 简单 require 'fluent-logger' # API: FluentLogger.new(tag_prefix, options) log = Fluent :: Logger :: ...

    Ruby-MongoDBLoggerRails的MongoDB记录器

    MongoDB Logger是专门为Ruby on Rails应用设计的一个日志记录器,它将日志信息存储在MongoDB数据库中,而非传统的文本文件。这个替代方案对于那些使用MongoDB作为主要数据存储的Rails应用尤其有用,因为它提供了集成...

Global site tag (gtag.js) - Google Analytics