AWS使用aws-logs
但是,我不明白如何格式化日志/将工具配置为更智能并重新组合相同的错误消息。现在AWS每行显示一条消息(因为每一行都有时间戳)
我当前的日志配置确实会为每条消息捕获一个新的日志条目。我怎么能绕过它
[rails/production.log]
file = /var/www/xxx/shared/log/production.log
log_group_name = /rails/production.log
log_stream_name = {instance_id}
time_zone = LOCAL
datetime_format = %Y-%m-%dT%H:%M:%S
答案 0 :(得分:0)
我实际上部分解决了使用lograge
和JSON输出的问题,该输出由亚马逊正确解析并允许您正确地重新组合大多数请求。
但是我仍然遇到一些错误问题,这些问题没有以相同的方式输出,并且仍然在awslogs上为每个调用堆栈跟踪生成一行
编辑:我们现在正在使用Rails API,并且在使用json:api错误处理程序渲染器拯救JSON请求期间抛出的常规异常。此外,我们使用Rollbar记录实际错误,因此与完整错误日志无关在我们的API :: ApplicationController
中# We don't want error reports for those errors
RESCUABLE_ERRORS = [
ActionController::ParameterMissing,
ActiveModel::ForbiddenAttributesError,
StrongerParameters::InvalidParameter,
Mongoid::Errors::Validations,
Mongoid::Errors::DocumentNotFound
]
# Note that in tests, we want to actually do not want to rescue non-Runtime exceptions straight away because most likely this indicates a real bug that you should fix, but in production we want to rescue any error so the frontend does not get the default HTML response but a JSON:api error
rescue_from(Rails.env.test? ? RuntimeError : Exception) do |e|
handle_exception(e)
notify_exception(e, 'Rescued from API controller - Rendering JSONAPI Error')
end
rescue_from(*RESCUABLE_ERRORS) do |e|
handle_exception(e)
end
在我们继承API :: ApplicationController的控制器中,我们添加了rescue_from
行,这取决于我们是要将异常报告为错误(notify_exception
)还是仅转换为JSON有效负载( handle_exception
)
rescue_from(SPECIFIC_ERROR_CLASS) do |exception|
handle_exception(exception) # will render a json:api error payload
# notify_exception(exception) # Optional : ExceptionNotifier to broadcast the error to email/Rollbar, etc. if this error should not happen.
end
设置为格式化常规JSON错误有效负载,这些有效负载成为refular请求,而错误本身则被拯救