在日志文件中写入错误消息

时间:2014-03-10 19:28:31

标签: ruby

我有一个关于在将错误消息写入日志文件时使用logger库的问题。

我正在尝试建立数据库连接,我想在日志文件中打印成功或失败消息。例如,如果用户输入了错误的数据库端口,则无法建立数据库连接。在这种情况下,我想在日志文件中打印"NativeException: java.sql.SQLException: The Network Adapter could not establish the connection"错误。

以下是我正在执行此操作的代码:

url = "jdbc:oracle:thin:#{host}:#{port}/#{db}"
log = Logger.new('log.txt')
    log.level = Logger::WARN

con_props = java.util.Properties.new
    con_props.setProperty("user", usr)
    con_props.setProperty("password", pwd)

    conn=Java::Oracle.jdbc::OracleDriver.new.connect("#{url}", con_props)
    log.error "#{conn}"

这会创建日志文件,但不会在其中写入消息。有人可以帮我吗?

Logfile如下所示:

# Logfile created on 2014-03-10 12:07:30 -0700 by logger.rb/v1.2.7

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望在连接失败时打印错误。如果是这种情况 - 你需要抓住Exception

url = "jdbc:oracle:thin:#{host}:#{port}/#{db}"
log = Logger.new('log.txt')
log.level = Logger::INFO

con_props = java.util.Properties.new
con_props.setProperty("user", usr)
con_props.setProperty("password", pwd)

begin
  conn=Java::Oracle.jdbc::OracleDriver.new.connect("#{url}", con_props)
  log.info "connection established!"
rescue => e
  log.error "Connection failed - #{e}"
  raise e
end

要创建附加到现有文件的Logger,请阅读documentation

  

为指定文件创建记录器。

file = File.open('foo.log', File::WRONLY | File::APPEND)
# To create new (and to remove old) logfile, add File::CREAT like;
#   file = open('foo.log', File::WRONLY | File::APPEND | File::CREAT)
logger = Logger.new(file)