I really love clickhouse logs. They helped me a lot of times, they 'tell stories' :) 

But on limited env (like tiny cloud instances) people often set the main log level from trace to information, or just disable it at all, keeping err log only - and motivation is very simple - logs are quite big, they take disk space & part of disk bandwidth - and that effect is very visible on tiny instances.

Maybe if we would compress them with LZ4 (streaming) it will be fewer reasons to disable them? 

What do you think of that? (I'm not totally convinced if it's good, because logs usually are expected to be straight and simple). 
DB::ConfigProcessor(config_path).savePreprocessedConfig(loaded_config, "");
    
    {
        struct rlimit rlim;
        if (getrlimit(RLIMIT_CORE, &rlim))
            throw Poco::Exception("Cannot getrlimit");
        
        rlim.rlim_cur = config().getUInt64("core_dump.size_limit", 1024 * 1024 * 1024);
        if (rlim.rlim_cur && setrlimit(RLIMIT_CORE, &rlim))
        {
            
            std::cerr << "Cannot set max size of core file to " + std::to_string(rlim.rlim_cur) << std::endl;
        }
    }
    
    if (config().has("timezone"))
    {
        const std::string config_timezone = config().getString("timezone");
        if (0 != setenv("TZ", config_timezone.data(), 1))
            throw Poco::Exception("Cannot setenv TZ variable");
        tzset();
        DateLUT::setDefaultTimezone(config_timezone);
    }
    std::string log_path = config().getString("logger.log", "");
    if (!log_path.empty())
        log_path = fs::path(log_path).replace_filename("");
    /** Redirect stdout, stderr to separate files in the log directory (or in the specified file).
      * Some libraries write to stderr in case of errors in debug mode,
      *  and this output makes sense even if the program is run in daemon mode.
      * We have to do it before buildLoggers, for errors on logger initialization will be written to these files.