前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >日志文件过大优化

日志文件过大优化

作者头像
Mr.Vv
修改2019-10-16 08:43:56
1.3K0
修改2019-10-16 08:43:56
举报

声明: 如果您有更好的技术与作者分享,或者商业合作; 请访问作者个人网站 http://www.esqabc.com/view/message.html 留言给作者。 如果该案例触犯您的专利,请在这里:http://www.esqabc.com/view/message.html 留言给作者说明原由 作者一经查实,马上删除。 手机留言请访问:http://www.esqabc.com

1,处理Tomcat日志文件catalina.out过大问题

a,利用Linux自带的logrotate程序来处理catalina.out的文件过大 (1)编辑logrotate.conf文件,打开compress选项(去掉注释)

[root@localhost ~]# cat /etc/logrotate.conf | grep -v “^$”| grep -v “#”

代码语言:javascript
复制
weekly
rotate 4
create
dateext
compress   <<这一项,去掉注释
在这里插入图片描述
在这里插入图片描述

(2)添加指定文件,在/etc/logrotate.d/目录下新建一个名为tomcat的文件

[root@localhost ~]# cat > /etc/logrotate.d/tomcat <<EOF

方案1:

代码语言:javascript
复制
/home/tomcat/logs/catalina.out{ #要轮转的文件
    copytruncate    # 创建新的catalina.out副本后,截断源catalina.out文件
    notifempty      # 如果是空文件的话,不转储
    daily    # 每天进行catalina.out文件的轮转
    rotate 20     # 至多保留20个副本
    missingok    # 如果要轮转的文件丢失了,继续轮转而不报错
    compress     # 使用压缩的方式(节省硬盘空间;一个2~3GB的日志文件可以压缩成60MB左右)
    size 100M     # 当catalina.out文件大于100MB时,就轮转
}

方案:2

代码语言:javascript
复制
/home/tomcat/logs/catalina.out{ #要轮转的文件
    copytruncate    # 创建新的catalina.out副本后,截断源catalina.out文件
    notifempty      # 如果是空文件的话,不转储
    daily    # 每天进行catalina.out文件的轮转
    rotate 20     # 至多保留20个副本
    missingok    # 如果要轮转的文件丢失了,继续轮转而不报错
    compress     # 使用压缩的方式(节省硬盘空间;一个2~3GB的日志文件可以压缩成60MB左右)
    size 100M     # 当catalina.out文件大于100MB时,就轮转
    sharedscripts  # 执行脚本
    postrotate # 脚本开始
    	# 把操作当前的日志文件的进程停止并清空(注意:这里的进程是指日志文件的进程,不是应用程序的进程,这两者要区分起来)
    	# 如果不停止操作当前的日志文件的进程,压缩文件后,原文件的存储空间会一样不变,内容会减少,出现/0或其他乱码代替了存        		        储空间,达不到压缩的效果。
	    /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript  #脚本结束
}

参数说明:

代码语言:javascript
复制
  compress          #通过gzip 压缩转储旧的日志
  nocompress        #不需要压缩时,用这个参数
  copytruncate      #用于还在打开中的日志文件,把当前日志备份并截断
  nocopytruncate    #备份日志文件但是不截断
  create mode owner group    #使用指定的文件模式创建新的日志文件
  nocreate         #不建立新的日志文件
  delaycompress    #和 compress 一起使用时,转储的日志文件到下一次转储时才压缩
  nodelaycompress  #覆盖 delaycompress 选项,转储同时压缩。
  errors address   #专储时的错误信息发送到指定的Email 地址
  ifempty         #即使是空文件也转储,这个是 logrotate 的缺省选项。
  notifempty      #如果是空文件的话,不转储
  mail address    #把转储的日志文件发送到指定的E-mail 地址
  nomail          #转储时不发送日志文件
  olddir directory    #转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
  noolddir            #转储后的日志文件和当前日志文件放在同一个目录下
  prerotate/endscript     #在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
  postrotate/endscript    #在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
  sharedscripts    #所有的日志文件都轮转完毕后统一执行一次脚本
  daily            #指定转储周期为每天
  weekly           #指定转储周期为每周
  monthly          #指定转储周期为每月
  rotate count    #指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
  size size       #当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB

(3)执行方式 a,系统自动执行

每天晚上crond守护进程会运行在/etc/cron.daily目录中的任务列表与logrotate相关的脚本也在/etc/cron.daily目录中。 运行的方式为"/usr/bin/logrotate /etc/logrotate.conf"; /etc/logrotate.conf文件include了/etc/logrotate.d/目录下的所有文件。还包括我们上面刚创建的tomcat文件; /etc/logrotate.d/tomcat文件会触发/home/tomcat/utr/logs/catalina.out文件的轮转。

b,手动执行:

[root@localhost ~]# logrotate /etc/logrotate.conf

c,只轮转刚刚的tomcat配置文件:logrotate --force /etc/logrotate.d/tomcat

[root@localhost ~]# logrotate --force /etc/logrotate.d/tomcat

2,Tomcat使用域名(80端口)访问配置

[root@localhost ~]# vi /home/tools/apache-tomcat-8.5.42/conf/server.xml

代码语言:javascript
复制
<?xml version='1.0' encoding='utf-8'?>

<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

  
  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>

  
  
  <Service name="Catalina">
  
    <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
	
    <Engine name="Catalina" defaultHost="localhost">
       <Realm className="org.apache.catalina.realm.LockOutRealm">
         <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
       </Realm>

      <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />

	<!--<Context path="" docBase="esqsui" debug="0" reloadable="false" crossContext="true"/>-->
		<Context path="" docBase="esqsui" debug="0" reloadable="false" crossContext="true"/>
      </Host>
    </Engine>
  </Service>
  
  
</Server>

3,处理Java项目日志文件nohup.out过大问题

(1)添加指定文件,在/etc/logrotate.d/目录下新建一个名为java_logloop的文件

[root@localhost ~]# cat > /etc/logrotate.d/java_logloop<<EOF

代码语言:javascript
复制
/home/esqabc/esqabc_jar/nohup.out{ #要轮转的文件
    copytruncate    # 创建新的nohup.out副本后,截断源nohup.out文件
    notifempty      # 如果是空文件的话,不转储
    daily          # 每天进行nohup.out文件的轮转
    rotate 20     # 至多保留20个副本
    missingok    # 如果要轮转的文件丢失了,继续轮转而不报错
    compress     # 使用压缩的方式(节省硬盘空间;一个2~3GB的日志文件可以压缩成60MB左右)
    size 100M     # 当nohup.out文件大于100MB时,就轮转
}

(2)Java项目启动命令 a,错误的启动命令

[root@localhost ~]# nohup java -jar esqbac-jar-1.0.0.jar > nohup.out 2>&1 &

说明:启动命令中 esqbac-jar-1.0.0.jar > nohup.out & 重定向输出用的是 > 这种情况如果服务不停止,文件占用的磁盘空间不会被释放

b,正确的启动命令

[root@localhost ~]# nohup java -jar esqbac-jar-1.0.0.jar >> nohup.out 2>&1 &

说明: 把 > 替换成 >> 追加的形式,就可以被logrotate正常切割

c,可以使用(ll -h)和(du -sh )来查看实际的存储大小

[root@localhost ~]# ll -h [root@localhost ~]# du -sh

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-07-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1,处理Tomcat日志文件catalina.out过大问题
  • 2,Tomcat使用域名(80端口)访问配置
  • 3,处理Java项目日志文件nohup.out过大问题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档