0

我正在print将一些数据写入自定义日志文件。这是我目前使用的代码:

print eco_logger.info("日期:" + Time.now.strftime("%I:%M:%S") + " | " + "用户:" + current_user.email.to_s() + " | " + "操作:已编辑用户 | 用户:" + @user.first_name.to_s + " " + @user.last_name.to_s + " | 电子邮件:" + @user.email.to_s)

在我的本地开发环境中,它运行良好。每次打印都会像这样换行:

log
log
log

但是,当我将应用程序推送到登台开发服务器时,日志开始打印如下:

logloglog

我也试过\n,看看是否可行;像这样:

print eco_logger.info("\nDate: " + Time.now.strftime("%I:%M:%S") + " | " + "用户:" + current_user.email.to_s() + " | " + "操作:已编辑用户 | 用户:" + @user.first_name.to_s + " " + @user.last_name.to_s + " | 电子邮件:" + @user.email.to_s)

在本地,它添加了另一个空间,所以事情是这样的:

log

log

log

在舞台上,事情保持不变。


有人能对这个问题有所了解吗?

4

2 回答 2

0

为什么不使用内置记录器而不是复杂的打印语句?

logger.debug "Person attributes hash: #{@person.attributes.inspect}"
logger.info "Processing the request..."
logger.fatal "Terminating application, raised unrecoverable error!!!"
于 2013-09-27T15:22:31.583 回答
0

因此,假设您已eco_logger设置写入自己的日志文件,那么调用eco_logger.info应该足以将一行写入文件。

我完全不确定您为什么还要使用print它,这似乎是多余的,并且可能是问题的一部分。

你能解释一下为什么你同时使用这两种方法吗?像这样的print本身将打印行到STDOUT末尾没有换行符(这是和之间的区别putsprint

它看起来像在开发中,您可能会看到语句写入的内容,该eco_logger.info语句将用换行符写入eco_logger指定文件。

但是,在登台时,我认为您正在观看一些日志,其中print输出STDOUT被捕获,其中不包括换行符。

于 2013-09-27T15:22:43.327 回答