- 重要な情報
- アプリ内
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
Datadog でまだログを収集していない場合は、ログドキュメントを参照してログを設定してください。source
タグ (言語指定) が適切に構成されていることを確認してください。Datadog では、Agent ベースのログ収集の設定を推奨しています。
Python、Java、Ruby などの言語では、ログの source
タグが正しく設定されていれば、追加の設定は必要ありません。必要な属性は全て自動的にタグ付けされ、Datadog に送信されます。
C#、.NET、Go、Node.js などのバックエンド言語については、各セクションのコード例で、エラーログを適切に構成し、ログの error.stack
に必要なスタックトレースをアタッチする方法を示しています。
もし、スタックトレースを Datadog に送信しているが、error.stack
にない場合、ジェネリックログリマッパーをセットアップして、スタックトレースを Datadog の正しい属性にリマップすることが可能です。
課題でのインラインコードスニペットを構成するには、ソースコードインテグレーションを設定します。Error Tracking for Logs でコードスニペットを追加する場合、APM は必要ありません。エンリッチメントタグとリンク先のリポジトリは、どちらも同じです。
C# のログ収集の設定をしていない場合は、C# ログ収集ドキュメントを参照してください。
キャッチした例外を自分でログに残すには、オプションで以下を使用できます。
var log = new LoggerConfiguration()
.WriteTo.File(new JsonFormatter(renderMessage: true), "log.json")
.Enrich.WithExceptionDetails()
.CreateLogger();
try {
// ...
} catch (Exception ex) {
// ログ呼び出しの最初の引数として例外を渡す
log.Error(ex, "an exception occurred");
}
C# のログ収集の設定をしていない場合は、C# ログ収集ドキュメントを参照してください。
キャッチした例外を自分でログに残すには、オプションで以下を使用できます。
private static Logger log = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
try {
// ...
} catch (Exception ex) {
// ログ呼び出しの第二引数として例外を渡す
log.ErrorException("an exception occurred", ex);
}
}
C# のログ収集の設定をしていない場合は、C# ログ収集ドキュメントを参照してください。
キャッチした例外を自分でログに残すには、オプションで以下を使用できます。
class Program
{
private static ILog logger = LogManager.GetLogger(typeof(Program));
static void Main(string[] args)
{
try {
// ...
} catch (Exception ex) {
// ログ呼び出しの第二引数として例外を渡す
log.Error("an exception occurred", ex);
}
}
}
Go のログ収集の設定をしていない場合は、Go ログ収集ドキュメントを参照してください。
キャッチした例外を自分でログに残すには、オプションで以下を使用できます。
// https://github.com/pkg/errors の場合
type stackTracer interface {
StackTrace() errors.StackTrace
}
type errorField struct {
kind string `json:"kind"`
stack string `json:"stack"`
message string `json:"message"`
}
func ErrorField(err error) errorField {
var stack string
if serr, ok := err.(stackTracer); ok {
st := serr.StackTrace()
stack = fmt.Sprintf("%+v", st)
if len(stack) > 0 && stack[0] == '\n' {
stack = stack[1:]
}
}
return ErrorField{
kind: reflect.TypeOf(err).String(),
stack: stack,
message: err.Error(),
}
}
log.WithFields(log.Fields{
"error": ErrorField(err)
}).Error("an exception occurred")
Java のログ収集を設定していない場合は、Java ログ収集ドキュメントを参照してください。ログに source:java
というタグが付けられていることを確認してください。
キャッチした例外を自分でログに残すには、オプションで以下を使用できます。
Logger logger = LogManager.getLogger("HelloWorld");
try {
// ...
} catch (Exception e) {
// ログ呼び出しの最後の引数として例外を渡す
logger.error("an exception occurred", e)
}
キャッチした例外を自分でログに残すには、オプションで以下を使用できます。
Logger logger = LoggerFactory.getLogger(NameOfTheClass.class);
try {
// ...
} catch (Exception e) {
// ログ呼び出しの最後の引数として例外を渡す
logger.error("an exception occurred", e)
}
Node.js のログ収集の設定をしていない場合は、Node.js ログ収集ドキュメントを参照してください。
キャッチした例外を自分でログに残すには、オプションで以下を使用できます。
try {
// ...
} catch (e) {
logger.error("an exception occurred", {
error: {
message: e.message,
stack: e.stack
}
});
}
Python のログ収集を設定していない場合は、Python ログ収集ドキュメントを参照してください。ログに source:python
というタグが付けられていることを確認してください。
キャッチした例外を自分でログに残すには、オプションで以下を使用できます。
try:
// ...
except:
logging.exception('an exception occurred')
Ruby on Rails のログ収集の設定をしていない場合は、Ruby on Rails ログ収集ドキュメントを参照してください。
キャッチした例外を自分でログに残すには、オプションで以下を使用できます。
# Lograge 構成
config.lograge.enabled = true
# JSON 形式でログを記録することを指定する
config.lograge.formatter = Lograge::Formatters::Json.new
# ログのカラーリングを無効にする
config.colorize_logging = false
# 専用ファイルへのログ記録
config.lograge.logger = ActiveSupport::Logger.new(Rails.root.join('log', "#{Rails.env}.log"))
# 例外のログを正しいフィールドにログ記録するよう構成する
config.lograge.custom_options = lambda do |event|
{
error: {
type: event.payload[:exception][0],
message: event.payload[:exception][1],
stack: event.payload[:exception_object].backtrace
}
}
end
end
お役に立つドキュメント、リンクや記事:
お役に立つドキュメント、リンクや記事: