---
title: "在 rails log 加上有用的标签信息"
description: "刚学到 rails 的 tagged logging。你知道可以用下面的方式为 log 加上标签吗"
canonical: https://oozou.com/til/tag-rails-logs-with-useful-information-32
locale: zh-Hans
date: 2020-10-13
topic: ruby-on-rails
---

# 在 rails log 加上有用的标签信息

> 刚学到 rails 的 tagged logging。你知道可以用下面的方式为 log 加上标签吗

Published: 2020-10-13 · Topic: [ruby on rails](https://oozou.com/zh-Hans/til-topics/ruby-on-rails) ([markdown](https://oozou.com/zh-Hans/til-topics/ruby-on-rails.md))

刚学到 rails 的 tagged logging。你知道可以用下面的方式为 log 加上标签吗

```ruby
logger.tagged('Your Tag') { logger.info('Message') }
```

# config/application.rb

你也可以用下面的方式全局应用

```ruby
# config/application.rb
config.log_tags = [:method_on_request_object, lambda { |request| request.method.modifier_method }]
```

# config/application.rb

把 client 的设备 OS 和 OS 版本信息加进 log（需要 client 发送 X-OS 和 X-OS-Version 请求头）

```ruby
# config/application.rb
config.log_tags = [ :request_id, lambda { |request| "#{request.headers['HTTP_X_OS']} #{request.headers['HTTP_X_OS_VERSION']}" } ]
```

在 production 环境中，可以在 config environments production.rb 文件加入特定设置，以优化 logging 和性能。

# 1. log tags 简介

Log tags 是 Rails 一项强大的功能，让你可以在 log 中加入自定义信息，使调试和理解应用程序行为变得更容易。通过 log tags，你可以把相关的 log 消息分门别类，让 log 更易读、更有用。在这一节，我们会介绍 log tags 的概念，并说明如何在你的 Rails 应用程序中使用它们。

# 2. 设置 Rails 组件

设置 Rails 组件是构建应用程序的重要一环。在这一节，我们会讨论如何设置各种 Rails 组件，包括 application、environment 和 middleware。我们也会说明如何使用 config 方法为你的应用程序创建自定义设置。

# 3. 自定义 log tags

自定义 log tags 让你可以在 log 中加入与你的应用程序相关的特定信息。在这一节，我们会讨论如何用 log\_tags 方法自定义 log tags。我们也会说明如何使用 Proc 和能响应 to\_s 的对象，为 log 加入动态信息。

# 4. log 标签示例

Log tagging 是很灵活的功能，可以用各种方式改善你的 log。在这一节，我们会提供在不同场景使用 log tags 的示例，例如记录对外部 API 的请求、后台任务和用户信息。我们也会说明如何用 log tags 为多租户应用程序调试。

# 5. log tags 的最佳实践

要有效使用 log tags，需要遵循一些最佳实践，确保你的 log 易读且有用。在这一节，我们会讨论使用 log tags 的最佳实践，包括如何让 log 保持精简、如何使用有意义的标签名称，以及如何避免过度加标签。我们也会说明如何把 log tags 和其他 logging 工具、技巧结合使用，充分发挥 log 的价值。

---

Contact OOZOU: hello@oozou.com · +66 2544 0000 · https://oozou.com/zh-Hans/contact

More for AI agents: https://oozou.com/llms.txt · every page has a markdown twin at its URL plus ".md"
