| // 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(); | |
| } |