今天给各位分享java查看日志常用的命令的知识,其中也会对查看日志用什么命令进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、gc日志如何查看哪些
- 2、日志的查看
- 3、日志查询常用命令
- 4、如何查看log日志文件
- 5、java指定日志配置路径命令
- 6、如何查看服务器日志
gc日志如何查看哪些
要查看GC日志首先要知道GC的log放在哪里,使用jps命令查看当前有哪些java进程在运行,找到我们要查看的java程序的进程pid
使用命令jinfo pid 来查看这个进程对应的java 信息,可以看到大概在最下面的地方有个参数-Xloggc:,他对应的就是gc log的位置。
用gcviewer 打开gc log可以很直观的查看gc log:
第一个标签页就是Chart,这也是最可以直观看出有没有问题的地方,如上图所示,这个日志反应了gc一直在不停的做新生带的回收,并且老年代的使用率一直在增加。图中整个高度为JVM总的内存大小,也就是989.9M,从右侧的Summary也可以看出。其中的紫色部分为老年代的大小,黄色部分是新生带的大小。不同颜色的线和图块的含义可以从菜单看出,如下图:
第二个tab是Event Dtails,可以看出各种GC的次数和时间间隔,以及效果:
日志的查看
1.首先需要堡垒机的地址,可能涉及权限,找相应的开发开一个权限,堡垒机上会有web终端的入口,或者终端里面命令 ssh lizhenzhen@jumpserver.baijiahulian.com
2.找到对应的模块,进入到模块里面查看日志
eg:student的日志可以进入下面模块查看
日志的查询模式:
1.按照时间节点查询
2.不按照日期,直接进到业务日志下面找
3.关键字过滤
4.动态实时查询日志
tail -f stdout.log 退出 ctrl+C
日志常用的命令:
tail -f stdout.log
tail -f stdout.log | grep 'demo'
grep 'demo' stdout.log
grep 'demo' stdout.log -A 10 前 10 行
grep 'demo' stdou.log -B 10 后 10 行
grep 'demo' stdout.log -C 10 前后 10 行
grep 'fb51b67c01de0392b0d50f3bfe1 29df0' info-2020-06.log
grep正则
告警标记有机器、logID
mq 日志(公司内用的是rocketmq,先知道mq消费事件,在查messagevent)
grep '发送消息' stdout.log,查询到 messageId
grep 'messageId' stdout.log,到消费者机器查询消费信息
某个接口404怎么办
常见原因:1)可能是Java服务没启动 2)url请求错误(全链路适用)
调试方法:找到对应的模块,看下tomcat是否启动,未启动先启动服务
ps -ef|grep tomcat可查看状态;查出对应的pid
可以对进程进行强制杀死等操作【kill -1365 pid】
日志查询常用命令
输出匹配结果到文件
grep keyword (or ) filename
""表示覆盖, ""表示追加
去除重复,注意uniq只能去除连续的重复行,因此需要先排序,之后再用uniq去重
grep 'keyword' filename | sort | uniq
查看文件时加上-Oec参数,解决中文显示乱码
lv -Oec filename
截取文件指定列 指定分隔符为空格
cut -d ' ' -f 3-5 获取第3-5个域的内容
提取包含关键字的行,截取指定列,排序,去重
grep 'keyword' filename | cut -d ' ' -f 3-5 | sort | uniq
关键词计数
cat file_name | grep keyword | wc -l
grep keyword file_name | wc -l
高亮显示搜索结果
grep --color 'key word' filename
查找日志文件中所有包含exception,fail,error关键字的词组并分组计数
egrep -o '[a-zA-Z]+ (exception|fail|error)' filename | sort | uniq -c
如何查看log日志文件
查看方法:
一、在 Java 与 C 语言中输出日志:
1) Java 代码在程序中输出日志, 使用 android.util.Log 类的以下 5 个方法:
Log.v()、Log.d()、Log.i()、Log.w()、Log.e()。
分对应 Verbose、Debug、INFO、Warn、Error 的首字母。
例如:Log.i( "类::函数名", "日期_时间_源码文件名_行号_日志信息内容" );
2) C 代码在程序中输出日志,使用 log 的 API 函数:
__android_log_write( 日志类型宏,日志标签字符串,日志令牌内容字符串 );
需要:1. Android.mk 中添加 LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
2. *.c 中添加 #include android/log.h
3. 日志类型宏有:
复制代码 代码如下:
// Android log priority values, in ascending priority order.
typedef enum android_LogPriority {
ANDROID_LOG_UNKNOWN = 0,
// only for SetMinPriority()
ANDROID_LOG_DEFAULT,
ANDROID_LOG_VERBOSE,
ANDROID_LOG_DEBUG,
ANDROID_LOG_INFO,
ANDROID_LOG_WARN,
ANDROID_LOG_ERROR,
ANDROID_LOG_FATAL,
// only for SetMinPriority(); must be last
ANDROID_LOG_SILENT,
} android_LogPriority;
二、logcat 使用方法:
Usage: logcat [options] [filterspecs]
用法: logcat [选项] [过滤说明]
options include:
选项包含:
-s Set default filter to silent.
Like specifying filterspec '*:S'
设置默认过滤为无声的。
像指定过滤说明为 *:S ,见下面 过滤说明 部份详述
-f filename Log to file.
Default to stdout
输出日志到文件。
默认为 stdout
-r [kbytes] Rotate log every kbytes.
(16 if unspecified).
Requires -f
设置环形日志缓冲区的kbytes。
默认值为16。
需要和 -f 选项一起使用
-n count Sets max number of rotated logs to count, default 4
设置环形日志缓冲区的最大数目,默认值是4,需要和 -r 选项一起使用
-v format Sets the log print format, where format is one of:
设置 log 的打印格式, 格式有如下主要7种:(不能组合使用)
brief
process
tag
thread
raw
time
threadtime
long
-c clear (flush) the entire log and exit
清除所有 log 并退出
-d dump the log and then exit (don't block)
得到所有log并退出且不阻塞
-t count print only the most recent count lines (implies -d)
仅打印最近的由参数 count 指出的行数(必然包含 -d)
-g get the size of the log's ring buffer and exit
得到环形缓冲区的大小并退出
-b buffer Request alternate ring buffer, 'main', 'system', 'radio' or 'events'.
Multiple -b parameters are allowed and the results are interleaved.
The default is -b main -b system.
请求供替换的环形缓冲区,如:main,system,radio,events。
多个 -b 参数是被允许,并且结果是交错输出的。
-b main -b system 是默认的。
-B output the log in binary
输出 log 到二进制文件中。
filterspecs are a series of tag[:priority]
过滤说明是一系列 tag[:priority]
where tag is a log component tag (or * for all) and priority is:
tag 是 eclipse 中 logcat 图形界面中 Tag 的内容(或者有 * 表示全部),它之后的冒号(:)后面跟优先级:
日志类型标识符(优先级由低到高排列):
1. V — Verbose 详细的 - 最低优先权
2. D — Debug 调试
3. I — Info 消息
4. W — Warn 警告
5. E — Error 错误
6. F — Fatal 致命的
7. S — Silent 无声的 - 最高优先权
'*' means '*:d' and tag by itself means tag:v
* 意味着 *:d 且 单孤地 tag 意味着 tag:V
If not specified on the commandline, filterspec is set from ANDROID_LOG_TAGS.
如果在命令行上没有详细说明,过滤规格即是 ANDROID_LOG_TAGS 结果集。
If no filterspec is found, filter defaults to '*:I'
如果没有过滤说明,过滤规格默认为 *:I
If not specified with -v, format is set from ANDROID_PRINTF_LOG or defaults to "brief"
如果没有 -v 指定格式,将是 ANDROID_PRINTF_LOG 或 brief 格式集。
1) 只输出指定 标签 和 类型 的日志
格式:
adb logcat 日志标签:日志类型标识符 日志标签:日志类型标识符 ... *:S
注:1. 可以写多个 日志标签:日志类型标识符 之间用空格分隔;
2. 最后必须是 *:S ,表示其它的都不要显示出来
例如:
$ adb logcat dalvikvm:D Checkin:W *:S
注:adb logcat Checkin *:S =等同于= adb logcat Checkin:V *:S
注:以上命令均没加 -v 来指出日志格式,即默认为: ANDROID_PRINTF_LOG 或 brief 格式集。
2) 输出指定 标签 和 类型 的带有格式的日志
注:以下测试日志内容为:test log format,
即 eclipse 中的 logcat 图形界面里的 Text 中的内容!
1. brief - 日志类型/日志标签(进程ID): 日志内容
例如:$ adb logcat -v brief Checkin *:S
I/Checkin(24713): test log format
2. process - 日志类型(进程ID) 日志内容 (日志标签)
例如:$ adb logcat -v process Checkin *:S
I(24713) test log format (Checkin)
3. tag - 日志类型/日志标签: 日志内容
例如:$ adb logcat -v tag Checkin *:S
I/Checkin: test log format
4. thread - 日志类型(进程ID:线程ID)
例如:$ adb logcat -v thread Checkin *:S
I(24713:0x6089) test log format
5. raw - 日志内容
例如:$ adb logcat -v raw Checkin *:S
test log format
6. time - 日期 调用时间 日志类型/日志标签(进程ID): 日志内容
例如:$ adb logcat -v time Checkin *:S
05-27 11:25:33.854 I/Checkin(24713): test log format
7. threadtime - 日期 调用时间 进程ID 线程ID 日志类型 日志标签: 日志内容
例如:$ adb logcat -v time Checkin *:S
05-27 11:25:33.854 24713 24713 I Checkin: test log format
注:只有此种格式时 线程ID 为十进制数。
8. long - [ 日期 调用时间 进程ID:线程ID 日志类型/日志标签 ] 转行显示 日志内容
例如:$ adb logcat -v long Checkin *:S
[ 05-27 11:25:33.854 24713:0x6089 I/Checkin ]
test log format
java指定日志配置路径命令
单独的Java程序包, 需要通过命令java -jar或java -cp的方式启动;
我们可以在启动命令中加入系统运行时变量, 在log4j加载配置文件之前通过System.getProperties(“path”)读取此变量, 即可实现灵活加载当前路径.
(1) 启动脚本设置:
假设当前项目的目录结构为:
/Projects/KafkaConsumer
丨 bin 项目的启动脚本
丨 conf 项目的配置文件
丨 lib 项目的其他依赖包
丨 bogs 项目的日志输出路径
启动脚本位于bin目录下, 内容示例如下:
# 获取当前脚本所处的目录, 然后进入其上级目录, 最后pwd输出该目录, 最终的结果是/Project/KafkaConsumerbase_dir=$(cd `dirname $0`; cd ..; pwd)# 获取Java运行程序的位置, 并指定主类java_bin=$(which java)main_class=”org.shoufeng.elastic.ConsumerMain”# 通过-cp、扩展CLASSPATH、指定主类的方式启动项目, # 并通过“-D”的方式向此程序的运行时环境中设置当前项目的路径,# 即可在程序中通过System.getProperty(“base.dir”)获取此路径 nohup ${java_bin} -Dbase.dir=${base_dir} -cp ${CLASSPATH}:${base_dir}/conf:${base_dir}/lib/* ${main_class} /dev/null
(2) Java程序读取变量:
实log4j的FileAppender本身支持动态设置文件路径, 如:
log4j.appender.logfile.File=${base.log}/logs/app.log
其中“${base.log}”是一个变量, 会被System Property中的base.log的值代替, 代码中的使用方式为:
public static void main(String[] args) { // 获取系统运行时变量中的日志文件的输出路径 // 此变量需要在启动命令中通过-D的方式设置 String baseDir = System.getProperty(“b
如何查看服务器日志
你好,查看服务器日志以Linux举例的话可通过以下方式查看:
1.进入日志文件所在的文件目录,比如:cd /opt/tomcat7/logs
2.通过命令打开日志,分析需求场景打开需要的日志。比如:tail -f catalina.out
3.常用命令一:tail比如:tail -f test.log (循环查看文件内容)
4.按照行号查询:cat(过滤出关键字附近的日志)cat -n test.log |grep "订单号" 然后使用 head -n 20 查看查询结果里的向前20条记录。
5.按照时间日期查询,(查询出一段时间内的记录)sed -n '/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p' test.log
java查看日志常用的命令的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于查看日志用什么命令、java查看日志常用的命令的信息别忘了在本站进行查找喔。
2、本站永久网址:https://www.yuanmacun.com
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
源码村资源网 » java查看日志常用的命令(查看日志用什么命令)