精华内容
下载资源
问答
  • 实际项目中经常会用到日志打印 为避免日志打印输出文件过大 消耗服务器内存 需要限制大小
  • access.log,件在 WEB 服务器运行一段时间之后会达到几十兆甚至上百兆,如果Apache运行有错误,error.log也会增大到几十兆,我们知道系统读写一个大的文本文件是非常耗内存的,因此限定日志文件大小十分必要。
  • 日志大小、看看这些参数是否能达到你的目的:命令行参数–log-bin=filename:记录二进制日志文件的位置,尽量指定路径名,如果不指定的话则保存在数据目录;–log-bin-index=file:记录二进制日志文件索引的位置,保存了...

    Mysql创建数据库时会在如下目录创建以数据库名为名的目录

    show variables like "%datadir%";

    数据文件日志也就在相应目录下了。

    日志大小、看看这些参数是否能达到你的目的:

    命令行参数–log-bin=filename:记录二进制日志文件的位置,尽量指定路径名,如果不指定的话则保存在数据目录;–log-bin-index=file:记录二进制日志文件索引的位置,保存了日志文件名;–max_binlog_size:单个文件最大多少;–binlog-do-db=db_name:哪个数据库使用,只有这个数据库使用;–binlog-ignore-db=db_name:哪个数据库不使用,只有这个数据库不使用;系统变量log_bin:日志的位置;binlog_cache_size:二进制日志缓存大小,是每一个连接进来的线程分配的大小,不是整个服务器的大小;max_binlog_cache_size:最大缓存大小;max_binlog_size:单个文件最大大小,超过此大小则再分配一个文件,但是一个事务必须在一个文件中,所以可能会稍大点;binlog_cache_use:当前连接使用的binlog缓存的事务的数量,使用show status like ‘binlog_cache_use’查看(show status命令显示了所有连接到mysql服务器的状态值);binlog_cache_disk_use:如果binlog_cache_use不够用,则在磁盘上缓存,应该尽量避免;binlog_do_db:设置master-slave时使用;binlog-ignore-db:设置哪个数据库不记录日志;sync_binlog:缓存与硬盘的同步频率(commit多少下同步一次,0表示服务器自动控制);

    取消

    评论

    展开全文
  • 具体设置如下 log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile) config.Setconfig() log.SetFilepath(config.VLOG_PATH_FILE) log.SetFileMax(int64(config.VLOG_FILE_MAXSIZE * 1024 * 1024))
  • 在工作中经常会碰见控制日志文件大小的问题,今天这篇文章主要讲解怎么去解决这类问题

    最近在开发过程中碰到一个问题,当我们在Linux环境下直接使用命令nohup Java -jar xxxxxx.jar & 来运行jar
    包的时候,默认生成的log文件只会在启动时生成一次文件,nohup.out会越来越大。而由于我的linux运行环境是在一个硬件设备上,分配的内存有限,日志文件很容易就将磁盘空间占满了,如果直接删掉log文件的话,后续的操作不会输出,也没有日志文件生成。那么有没有什么办法来解决这个问题呢?下面是我梳理的三种不同的解决办法,如果更多的解决办法,大家评论区讨论

    1.使用 Linux 自带的 logrotate 程序来控制日志文件尺寸

    在linux环境中,一般在 /etc目录下有一个 logrotate.d 文件夹或者有一个logrotate.conf的文件。

    1. logrotate.d 文件夹内部有很多规则文件,例如:针对firewalld的
    	/var/log/firewalld {
    	    weekly
    	    missingok
    	    rotate 4
    	    copytruncate
    	    minsize 1M
    	}
    

    下面来一个日志大小控制的例子
    编写配置文件,放在 /etc/logrotate.d/文件夹下新建一个文件 clearlogs,无需后缀,文件内容:

    	/opt/volumn/nohup.out {
    	    copytruncate
    	    daily
    	    dateext
    	    rotate 3
    	    compress
    	    missingok
    	    size 200M
    	}
    

    第一行是文件的全路径,大括号中的重要字段解释如下:
    copytruncate 使用先拷贝文件再 truncate 原文件的方法来轮转,这种方法无需停应用,也不会有数据丢失。
    daily 按天执行
    dateext 轮转后的日志备份加上日期后缀
    rotate 3 总共保留 3 份备份文件
    compress 开启gzip压缩,能大幅减少日志备份的尺寸
    missingok 日志文件不存在的时候不会报错(如果有多个配置,会继续执行)
    size 200M 只有文件大于 200M 时才轮转
    配置项的详细解释可以参考 man logrotate

    2.在logrotate.conf文件的最后加入一下条目

    # Rotate log files
    
    	/opt/volumn/nohup.out {
    		rotate 3
    		size=50M
    	}
    

    Rotate的意思是当nohup.out的大小超过50mb以后,将创建一个新的空nohup.log文件,并且这个旧的文件将被重命名为nohup.out.1,如果旧的文件达到了3个,那么最旧的将被循环删除,类似于日志文件重用的概念。

    为了使该命令生效,需要以root执行以下操作:
    $ logrotate /etc/logrotate.conf
    在/etc/logrotate.conf的顶端可以看见以下行:

    # rotate log files weekly
    

    weekly表示默认情况下,该命令每周执行一次。
    通过’man logrotate’,可以查看各种命令选项。
    需要特别注意的一个选项是copytruncate,在这个操作之间会有一段延迟,会造成数据的丢失,切忌不可在警告日志上使用

    2.定时任务清除日志文件

    我想的肯定是希望能写一个脚本把这些日志清除掉,但不是删除掉。那么现在需要实现3步:

         1.找到项目的log的位置
         2.清除log内容
         3.定时执行脚本
    

    有了思路,查找了资料后,找到了几个相关的命令:

    找到文件命令:
    find /opt/volumn/ -name 'nohup.out’*

    清除文件的命令:
    truncate -s 0 nohup.out {} ;
    切记,这里的“;”号不能省略, 意思是将nohup.out的大小变成0M,即把nohup.out的内容清空了

    综上编写一个清除日志的脚本:
    新建clearlogs.sh shell脚本

    #!/bin/bash
    
    status(){
      date 
      find /mnt/userdata/ulove/ -name 'nohup.out' -type f -print -exec truncate -s 0 {} \;
      echo "清空log成功"
      return
    }
    
    case "$1" in 
        status)
            status;;*)
                echo "清除失败"
    esac
    

    定时任务常用命令:
    crontab -l :查看定时任务
    crontab -e :添加任务
    crontab -r :删除任务
    cat /etc/crontab :查看crontab文件

    现在我们来添加一条任务:
    0 0 * * * ? /var/local/clearlog.sh status >>/var/local/clearresult.txt
    每小时执行脚本并输出到clearresult.txt文件 ,定时任务的写法:*(分) *(时) *(日) *(月) *(周) command

     添加好后查看(crontab -l )
    

    这里可能出现clear.txt生成了。但是没有内容,日志也没清除,这个原因可能是你没给这个脚本赋权限:
    chmod 755 clearlogs.sh

    3.docker运行环境

    1.新建 /etc/docker/daemon.json,若有就不用新建了。添加log-dirver和log-opts参数,样例如下:

    # vim /etc/docker/daemon.json
    
    {
      "log-driver":"json-file",
      "log-opts": {"max-size":"200m", "max-file":"2"}
    }
    

    max-size=200m,意味着一个容器日志大小上限是200M,
    max-file=2,意味着一个容器有两个日志,分别是id+.json、id+1.json

    2.然后重启docker的守护线程

    命令如下:

    systemctl daemon-reload
    systemctl restart docker

    【需要注意的是:设置的日志大小规则,只对新建的容器有效,如果你是已经运行的docker容器,那么你需要重新再创建一遍才能生效】

    展开全文
  • 限制为  5G 每次自动增长为 10M 方法一 : 使用 语句 修改 USE [master] GO ALTER DATABASE [DMS] MODIFY FILE ( NAME = N'DMS_log', MAXSIZE = 5120000KB , FILEGROWTH = 10240KB ) GO ALTER...

    一 Version: SQL Server 2008

    二 要求:

    日志大小限制为 5G

    每次自动增长为 10M

    方法一: 使用语句修改

    USE [master]

    GO

    ALTER DATABASE [DMS] MODIFY FILE ( NAME = N'DMS_log', MAXSIZE = 5120000KB , FILEGROWTH = 10240KB )

    GO

    ALTER DATABASE [Security] MODIFY FILE ( NAME = N'Security_log', MAXSIZE = 5120000KB , FILEGROWTH = 10240KB )

    GO

    修改日志文件初始大小为 1024M

    USE [SunLightIntf_NEW]

    GO

    DBCC SHRINKFILE (N'SunLightIntf_TEST_log' , 1024)

    GO

    ————————————————————————————————————————————

    重庆思庄18年3月OCP?认证培训周末班正在面授,欢迎联系试听!新的OCP周末班将于4月1日开课,火热报名中!更多详情访问思庄网站咨询在线客服。

    转载于:https://my.oschina.net/u/3761438/blog/1631182

    展开全文
  • 日志文件大小限定

    千次阅读 2018-04-24 15:36:03
     //根据pid区分不同用户的日志文件  snprintf(file_name, LOG_FILE_NAME_LEN, "/tmp/test_%d.log", getpid());    FILE *file = fopen(file_name, "r+");  if (NULL == file)  {  file = open(file_name, "w+...
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <unistd.h>   //getpid
    #include "time.h"
    #include "stdarg.h"
    #include "syslog.h"
    
    #define LOG_FILE_NAME_LEN     64        
    #define LOG_MAX_SIZE          128
    #define LOG_FILE_MAX_SIZE     1024
    
    long g_offset = 0;  //记录最后一次写入文件的位置
    
    void test_log(const char *ms, ...)
    {
        char wzlog[LOG_MAX_SIZE];
        char buffer[LOG_MAX_SIZE];
        char file_name[LOG_FILE_NAME_LEN];
        
        //格式化日志内容
        va_list args;
        va_start(args, ms);
        vsprintf(wzlog, ms, args);
        va_end(args);
        
        //获取系统时间
        time_t now;
        time(&now);
        struct tm *local;
        local = localtime(&now);
        
        //格式化系统时间、日志内容
        snprintf(buffer, LOG_MAX_SIZE, "%02d:%02d:%02d: %s\n", 
            local->tm_hout, local->time_min, local->time_sec, wzlog);
            
        //根据pid区分不同用户的日志文件
        snprintf(file_name, LOG_FILE_NAME_LEN, "/tmp/test_%d.log", getpid());
        
        FILE *file = fopen(file_name, "r+");
        if (NULL == file)
        {
            file = open(file_name, "w+");
        }
        
        //超过文件最大限制,则从文件头开始重新记录
        if (g_offset > LOG_FILE_MAX_SIZE)
        {
            g_offset = 0;
        }
        
        //fseek函数用于偏移文件当前指针到指定位置后,fwrite从该位置写入(发现如果用a+ fopen文件则不能指定偏移进行写入,新的内容一直从尾部开始写入)
        fseek(file, g_offset, SEEK_SET);
        fwrite(buffer, 1, strlen(buffer), file);
        
        fclose(file);
        
        g_offset += strlen(buffer);
        
        return;
    }
    
    int main()
    {
        int i = 0;
        
        for (i = 0; ; i++)
        {
            test_log("node %3d", i);
            
            sleep(1);
        }
        
        return 0;
    }
    程序运行后,超过1K后,则重新从文件头开始记录,日志效果如下:


    18:18:25 node 13      //  从13开始从文件头开始记录
    18:18:26 node 14
    18:18:27 node 15
    18:18:15 node  3       //  节点3为当前最老的日志点;节点0,1,2被最新日志覆盖
    18:18:16 node  4  
    18:18:17 node  5  
    18:18:18 node  6
    18:18:19 node  7
    18:18:20 node  8
    18:18:21 node  9
    18:18:22 node 10
    18:18:23 node 11
    18:18:24 node 12


    展开全文
  • flink如果不限制日志文件大小,如果报错的情况下,会产生大文件日志。
  • 问题描述: ... 后续查阅资料,发现是因为docker中的某个进程一直在持续输出,而这些输出会记录到docker日志中,日志默认位置在/var/lib/docker/containers/containeid 目录下面的containeid-json.lo...
  • SQLServer要在硬盘的日志文件中有记录,一边异常重启后重新修改。  2、所有没有提交的事务所产生的日志及其后续的日志记录:  所有日志都有严格顺序,不能有跳跃。  3、要做备份的日志记录:  如果恢复...
  • Linux实用程序logrotate定期重命名和重用系统错误日志文件,以便它们不占用过多的磁盘空间. Linux系统将有关此内容的所有相关信息存储到文件/etc/logrotate.conf中有许多属性可以帮助我们管理日志大小.在做任何事情...
  • shell脚本限制日志文件大小和行数

    千次阅读 2018-10-05 17:11:18
    背景: 项目server在后端持续运行...将超出限制日志文件,先备份,再清空原日志文件内容。 清空日志文件内容的方法有:  1. echo "" &gt; test.log  2. cat /dev/null &gt; test.log  3....
  • 1、将日志文件设置成指定大小 以下示例将 court_juror数据库中的日志文件收缩到 1 MB。 若要允许 DBCC SHRINKFILE 命令收缩文件,首先需要通过将数据库恢复模式设置为 SIMPLE 来截断该文件。 USE court_juror; GO...
  • 一、docker日志文件的方法 除了 docker logs -f 容器ID/容器名 这个方法以外。 在linux上,一般docker的日志文件存储在/var/lib/docker/containers/container_id/目录下的各个容器ID对应的目录下的*-json....
  • 比如当前日志有3份,分别为:Log2016-05-11.txt (日期最早,大小为5M), Log2016-05-12.txt (日期第二早,大小为6M), Log2016-0513.txt(最近日期,大小为2M) ,服务器设置日志容量大小为10MB,则每当应用初始化...
  • a、log4net日志设置 设置保存中的文件夹和指定文件数量和大小 b、App.config中添加 日志的配置信息 c、根据App.config中添加日志的配置信息初始化log4net日志 d、使用log4net写日志 App.config文件中添加log...
  • 如何按日期生成apache日志文件限制apache日志文件大小
  • Log4J的日志文件控制大小

    千次阅读 2010-03-21 02:30:00
    保存成日志文件形式的时候,大家经常会遇到一个问题:日志文件过大。上百兆的日志文件对 查阅日志信息来说也是一个问题。所以我希望能够每天或每个月产生一个日志文件,这样文件不至于过大。 或者根据日志文件
  • 用到apache自带的rotatelogs小工具 语法如下: rotatelogs [ -l ] logfile [ rotationtime [ offset ]] | [ filesizeM ] 参数解释: ...-l :使用本地时间代替GMT时间作为时间...logfile:它加上基准名就是日志文件
  • -- 失败日志还需要记录在日志文件中,日志文件采用10个10M的日志文件循环覆盖的方式,不至占满硬盘空间 --> <!-- files in general, please contact the logback user mailing list --> <!-- at...
  • gunicorn控制日志大小

    2021-04-06 17:12:56
    转:gunicorn日志的问题 ...配置文件写上 logconfig_dict = { 'version':1, 'disable_existing_loggers': False, 'loggers':{ "gunicorn.error": { "level": "DEBUG",# 打日志的等级可以换的,下面的同理 "hand
  • springboot默认的日志文件是不会自动按天分割的,所以生产环境的日志文件越来越大,很不利于排错。查了很多资料最终配置如下,可以完美按天按错误等级分割日志文件,配置如下。 由于springboot采用约定优先于配置的...
  • 当使用Flask集成日志logging后,使用RotatingFileHandler进行日志设置时,当文件大小超过设置... # 创建日志记录器, 指明日志保存的路径, 每个日志文件的最大大小,保存日志的文件上限个数 file_log_handler = Rota...
  • <property name="ROOT" value="logs"/> <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${ROOT}/info/info.log</file>...[%-5leve.
  • Tomcat默认生成的日志文件catalina.out,随着时间的推移,逐渐增大,可能达到G数量级。文件过大,我们将无法使用过常规编辑工具查看,严重影响系统维护工作。解决此问题,主要从Tomcat和代码两方面考虑。 一、 ...
  • nginx 超时设置 文件最大大小限制

    万次阅读 2018-10-15 10:53:57
    #文件最大大小 proxy_connect_timeout 600; #设置超时时间 proxy_read_timeout 600; proxy_send_timeout 600;  location / {  root /; # 定义服务器的默认网站根目录位置  index index....
  • 超大文件编辑工具,实测28G文件打开4分钟。个人感觉比vim、emed、logView都好使。超大日志神器。简直是windows系统查阅大文件日志的福星。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 307,077
精华内容 122,830
关键字:

日志文件限制大小

友情链接: ball.rar