Hexo


  • 首页

  • 归档

  • 标签

记一次查看tomcat日志文件的经历

发表于 2016-05-17   |   分类于 dialy   |  

事件的起源

也就是个查询tocmat中日志的事情。之前的一个定时任务在本地测试没有问题,于是放到生产环境中,过段时间貌似没有产生预期的效果。
于是想查看日志看看到底有什么问题。然而,现在问题来了,生产环境中的日志全部打印在默认的文件中,即:{$TOMCAT_HONME}/logs/catalina.out
此文件已大量堆积到现在臃肿到几G的地步。偷偷的百度了下怎么查看文件大小:

1
2
3
ls -lh catalina.out

-rw-rw-r-- 1 kanms kanms 5.2G Feb 2 15:45 catalina.out

对,没有看错,5.2G!!!

事件的经历

  • 首先找下是否有文件异常时自定义的一些打印日志,其中 -n 表示显示行号。
1
2
3
[kanms@kanms-web logs]$ grep -n "带附件和图片的邮件发送失败!!!" catalina.out
65393183:[kanms-eleManage] 『带附件和图片的邮件发送失败!!!』 (线程名:pool-8-thread-1) cn.com.starit.kanms.util.mail.SendMailUtil(SendMailUtil.java:81) 2016-02-02 00:00:02,616
65393215:[kanms-eleManage] 『带附件和图片的邮件发送失败!!!』 (线程名:pool-7-thread-1) cn.com.starit.kanms.util.mail.SendMailUtil(SendMailUtil.java:81) 2016-02-02 00:00:02,616
  • 根据显示的信息及时间然后定位需要查看的日志内容,如查看上面第一次出现后的200行日志
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[kanms@kanms-web logs]$ sed -n "65393183,65393383p" catalina.out
[kanms-eleManage] 『带附件和图片的邮件发送失败!!!』 (线程名:pool-8-thread-1) cn.com.starit.kanms.util.mail.SendMailUtil(SendMailUtil.java:81) 2016-02-02 00:00:02,616
org.springframework.mail.MailSendException: Mail server connection failed; nested exception is javax.mail.MessagingException: Unknown SMTP host: mail.ustcinfo.com;
nested exception is:
java.net.UnknownHostException: mail.ustcinfo.com. Failed messages: javax.mail.MessagingException: Unknown SMTP host: mail.ustcinfo.com;
nested exception is:
java.net.UnknownHostException: mail.ustcinfo.com; message exception details (1) are:
Failed message 1:
javax.mail.MessagingException: Unknown SMTP host: mail.ustcinfo.com;
nested exception is:
java.net.UnknownHostException: mail.ustcinfo.com
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1280)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370)
at javax.mail.Service.connect(Service.java:275)
at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:389)
at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:340)
at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:336)
at cn.com.starit.kanms.util.mail.SendMailUtil.sendFileMail(SendMailUtil.java:78)
at cn.com.starit.kanms.task.TaskJob.sendMailJob(TaskJob.java:27)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:64)
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:53)
at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:81)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
  • 通过日志发现原来是发送邮件服务器主机mail.ustcinfo.com不通的问题,但是本地使用同样的主机配置又试了一下可以发送
  • 于是在服务器上ping服务器主机不通。
1
2
[kanms@kanms-web logs]$ ping mail.ustcinfo.com
ping: unknown host mail.ustcinfo.com
  • 网上查阅之后才知道原来linux服务器上发送接收服务器需要安装sendmail包
  • 安装后依然无效,可能是配置不正确,目前是把邮箱服务器由域名改成IP

事件后的思考

这里不把重点放在sendmail的安装与配置说明上,主要是提出日志的大小和分类上。
目前的这种打印日志方式存在很多弊端,可以考虑按照以下方式进行修改:

  • 按时间分类出文件。比如说一天一个文件,这个使用log4j等日志框架的配置文件即可实现
  • 按照日志的级别进行分类出文件。比如ERROR以上的放在一个文件中;INFO级别的放一个文件;异常的放一个文件,这可以在输出的时候需要做处理
  • 按日志内容进行分类。比如登录日志放在一个文件,操作某个重保的表格放一个文件等;这些需要在打印日志的时候注意分类,或者自定义一些常用的打印日志级别

以上的只是一些设想,具体以能够把日志明确分开和方便定位日志信息为准则,可以交叉使用上面的规则。

社会化评论系统

发表于 2016-05-17   |   分类于 dialy   |  

以下是几个评论系统,这里做个记录,有时间去了解下

  • Disqus:http://disqus.com
  • 友 言:http://uyan.cc
  • 评论啦:http://pinglun.la
  • 贝 米:http://baye.me
  • 多 说:http://www.duoshuo.com

后续都试试看看怎么用,并找一个合适的用在自己的博客中

一些常用的git命令

发表于 2016-05-17   |   分类于 dialy   |  

一些常用的git命令行

1
2
3
4
5
6
7
8
9
10
git add .
git commin -m "udpate describe"
git commit -a -m "update describe"

git status
git push origin master

git checkout --file # 撤销工作区的更改
git reset --head [commit hashcode] # 回退到某个提交时的状态
git push --force # 强制提交到远程仓库

快速使用jekyll bootstrap主题

发表于 2016-05-17   |   分类于 dialy   |  
  • 目录
    {:toc}

本文介绍jekyll搭建基于jekyll-bootstrap主题的静态博客

本地运行jekyll-bootstrap

首先请确认本地已安装好jekyll相关环境:包括git,ruby,rubygem,python,pygments,jekyll等

在github上下载jekyll-bootstrap并使用jekyll本地运行

1
2
3
4
5
git clone https://github.com/plusjade/jekyll-bootstrap.git
cd jekyll-bootstrap
git remote set-url origin https://github/your_user_name/program_name(your_user_name.github.io)
git push origin master / git push origin gh-pages (program_name)
jekyll serve

其中中间的设置url和发布是发布到github上的,不是本地运行必须。
成功启动后访问localhost:4000即可访问博客主页。

jekyll-bootstrap主题的安装和选择

以上启动jekyll-bootstrap是默认使用twitter主题,如果想更改主题
可以使用rake下载安装主题。

安装主题

首先确认rake没有问题,我在安装的时候就报错can not load file ...,经查找没有安装rake编译模块。
使用gem install rake进行安装

使用git地址安装

1
rake theme:install git="https://github.com/jekyllbootstrap/theme-the-program.git"

安装完成后会提示是否使用此主题,输入Y回车使用该主题。

下载压缩包后安装

在网上下载主题的并解压到./_theme_packages目录下

1
rake theme:install name="theme-name"

切换主题

主题安装后,也可以通过rake在主题间进行切换

1
rake theme:switch name="the-program"

更多阅读

  • jekyll 官方文档
  • bootstrap中文团队翻译的jekyll文档
  • The Quickest Way to Blog on GitHub Pages
  • 上面网站的Using Themes部分

a newer post

发表于 2016-05-17   |  

test-hexo

发表于 2016-05-16   |  
12
codecly

codecly

千里之提,溃于蚁穴

16 日志
3 分类
23 标签
© 2016 codecly
由 Hexo 强力驱动
主题 - NexT.Pisces