| // Copyright 2023 The ChromiumOS Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include <base/logging.h> |
| #include <brillo/flag_helper.h> |
| #include <brillo/syslog_logging.h> |
| |
| #include "fbpreprocessor/configuration.h" |
| #include "fbpreprocessor/fbpreprocessor_daemon.h" |
| |
| namespace { |
| constexpr int kMaxLogLevel = 4; |
| constexpr int kMinLogLevel = -4; |
| |
| void ValidateAndSetMinLogLevel(int log_level) { |
| if (log_level > kMaxLogLevel || log_level < kMinLogLevel) { |
| LOG(ERROR) << "Log level (" << log_level << ") exceeds the valid range. " |
| << "Keep as the system default level."; |
| return; |
| } |
| LOG(INFO) << "Setting log level as " << log_level; |
| if (log_level > logging::LOGGING_INFO) { |
| LOG(WARNING) << "Log level larger than INFO. This is unusual and please " |
| "make sure the correct log_level is configured."; |
| } |
| logging::SetMinLogLevel(log_level); |
| } |
| } // namespace |
| |
| int main(int argc, char* argv[]) { |
| DEFINE_int32(log_level, logging::LOGGING_INFO, |
| "Logging level - 0: LOG(INFO), 1: LOG(WARNING), 2: LOG(ERROR), " |
| "-1: VLOG(1), -2: VLOG(2), ..."); |
| DEFINE_uint32(file_expiration, |
| fbpreprocessor::Configuration::kDefaultExpirationSeconds, |
| "Default expiration period of processed files, in seconds."); |
| |
| brillo::FlagHelper::Init( |
| argc, argv, "fbpreprocessord, the debug data preprocessing daemon."); |
| |
| brillo::InitLog(brillo::kLogToSyslog | brillo::kLogHeader); |
| |
| LOG(INFO) << "Starting fbpreprocessord."; |
| ValidateAndSetMinLogLevel(FLAGS_log_level); |
| |
| fbpreprocessor::Configuration config; |
| int file_expiration = FLAGS_file_expiration; |
| // Don't make it possible to have an arbitrary long expiration period with a |
| // misconfigured command line. |
| if (file_expiration > |
| fbpreprocessor::Configuration::kDefaultExpirationSeconds) { |
| file_expiration = fbpreprocessor::Configuration::kDefaultExpirationSeconds; |
| LOG(ERROR) << "File expiration set to invalid " << FLAGS_file_expiration |
| << " seconds, resetting to " << file_expiration << " seconds."; |
| } |
| LOG(INFO) << "Default file expiration set to " << file_expiration << "s"; |
| config.set_default_expirations_secs(file_expiration); |
| |
| fbpreprocessor::FbPreprocessorDaemon daemon(config); |
| return daemon.Run(); |
| } |