在日志中搜索的最佳方法是什么?
What are the best ways to search in logs?
在任何类型的服务中,在日志中搜索以下情况的最佳方法是什么:
1 - 如果错误已经发生。
2 - 如果 bug 被重现并且想要捕获 exception/error 发生的情况。
我知道但效率低下的一些方法是:
tail -f production.log => log flows and you have to check manually.
tail -n1000 production.log => log for last 1000 lines
tail -f production.log | grep '500 Internal Server Error' => shows the flow of log for only one particular line that says 500.
我想打印日志上方的 100 行,以便在两种情况下也打印回溯(尤其是第二种情况)。
希望我明白你想要什么。
使用带有 -B 选项的 grep(-B, --before-context=NUM 打印前导上下文的 NUM 行)来告诉在搜索行之前要打印多少行:
查找所有日志中的错误:
grep -B 100 '500 Internal Server Error' production.log
对于实时错误:
tail -f production.log | grep -B 100 '500 Internal Server Error'
您可以使用 sed
,即:
sed '/500 Internal Server Error/!d' sederror.log|sed 10q
解释:
sed '/500 Internal Server Error/!d'
将只打印匹配 500 Internal Server Error
的行
sed 100q
显示前 100 行(模拟 tail -n 100
)
在任何类型的服务中,在日志中搜索以下情况的最佳方法是什么:
1 - 如果错误已经发生。
2 - 如果 bug 被重现并且想要捕获 exception/error 发生的情况。
我知道但效率低下的一些方法是:
tail -f production.log => log flows and you have to check manually.
tail -n1000 production.log => log for last 1000 lines
tail -f production.log | grep '500 Internal Server Error' => shows the flow of log for only one particular line that says 500.
我想打印日志上方的 100 行,以便在两种情况下也打印回溯(尤其是第二种情况)。
希望我明白你想要什么。
使用带有 -B 选项的 grep(-B, --before-context=NUM 打印前导上下文的 NUM 行)来告诉在搜索行之前要打印多少行:
查找所有日志中的错误:
grep -B 100 '500 Internal Server Error' production.log
对于实时错误:
tail -f production.log | grep -B 100 '500 Internal Server Error'
您可以使用 sed
,即:
sed '/500 Internal Server Error/!d' sederror.log|sed 10q
解释:
sed '/500 Internal Server Error/!d'
将只打印匹配 500 Internal Server Error
sed 100q
显示前 100 行(模拟 tail -n 100
)