refactor
This commit is contained in:
parent
5a928208fd
commit
de6a7beb5e
@ -24,16 +24,17 @@
|
||||
|
||||
namespace repertory {
|
||||
enum class event_level {
|
||||
critical,
|
||||
error,
|
||||
warn,
|
||||
normal,
|
||||
info,
|
||||
debug,
|
||||
verbose,
|
||||
trace,
|
||||
};
|
||||
|
||||
auto event_level_from_string(std::string level) -> event_level;
|
||||
|
||||
auto event_level_to_string(const event_level &level) -> std::string;
|
||||
auto event_level_to_string(event_level level) -> std::string;
|
||||
|
||||
class event {
|
||||
protected:
|
||||
|
@ -72,7 +72,7 @@ app_config::app_config(const provider_type &prov,
|
||||
enable_mount_manager_(false),
|
||||
#endif
|
||||
enable_remote_mount_(false),
|
||||
event_level_(event_level::normal),
|
||||
event_level_(event_level::info),
|
||||
eviction_delay_mins_(default_eviction_delay_mins),
|
||||
eviction_uses_accessed_time_(false),
|
||||
high_freq_interval_secs_(default_high_freq_interval_secs),
|
||||
@ -195,72 +195,71 @@ auto app_config::default_rpc_port(const provider_type &prov) -> std::uint16_t {
|
||||
|
||||
auto app_config::get_json() const -> json {
|
||||
json ret = {
|
||||
{"ApiAuth", api_auth_},
|
||||
{"ApiPort", api_port_},
|
||||
{"ApiUser", api_user_},
|
||||
{"ChunkDownloaderTimeoutSeconds", download_timeout_secs_},
|
||||
{"EnableChunkDownloaderTimeout", enable_chunk_downloader_timeout_},
|
||||
{"EnableCommDurationEvents", enable_comm_duration_events_},
|
||||
{"EnableDriveEvents", enable_drive_events_},
|
||||
{"ApiAuth", api_auth_},
|
||||
{"ApiPort", api_port_},
|
||||
{"ApiUser", api_user_},
|
||||
{"ChunkDownloaderTimeoutSeconds", download_timeout_secs_},
|
||||
{"EnableChunkDownloaderTimeout", enable_chunk_downloader_timeout_},
|
||||
{"EnableCommDurationEvents", enable_comm_duration_events_},
|
||||
{"EnableDriveEvents", enable_drive_events_},
|
||||
#if defined(_WIN32)
|
||||
{"EnableMountManager", enable_mount_manager_},
|
||||
{"EnableMountManager", enable_mount_manager_},
|
||||
#endif
|
||||
{"EnableMaxCacheSize", enable_max_cache_size_},
|
||||
{"EncryptConfig",
|
||||
{
|
||||
{"EncryptionToken", encrypt_config_.encryption_token},
|
||||
{"Path", encrypt_config_.path},
|
||||
}},
|
||||
{"EventLevel", event_level_to_string(event_level_)},
|
||||
{"EvictionDelayMinutes", eviction_delay_mins_},
|
||||
{"EvictionUsesAccessedTime", eviction_uses_accessed_time_},
|
||||
{"HighFreqIntervalSeconds", high_freq_interval_secs_},
|
||||
{"HostConfig",
|
||||
{
|
||||
{"AgentString", hc_.agent_string},
|
||||
{"ApiPassword", hc_.api_password},
|
||||
{"ApiPort", hc_.api_port},
|
||||
{"HostNameOrIp", hc_.host_name_or_ip},
|
||||
{"TimeoutMs", hc_.timeout_ms},
|
||||
}},
|
||||
{"LowFreqIntervalSeconds", low_freq_interval_secs_},
|
||||
{"MaxCacheSizeBytes", max_cache_size_bytes_},
|
||||
{"MaxUploadCount", max_upload_count_},
|
||||
{"OnlineCheckRetrySeconds", online_check_retry_secs_},
|
||||
{"OrphanedFileRetentionDays", orphaned_file_retention_days_},
|
||||
{"PreferredDownloadType", preferred_download_type_},
|
||||
{"ReadAheadCount", read_ahead_count_},
|
||||
{
|
||||
"RemoteMount",
|
||||
{
|
||||
{"EnableRemoteMount", enable_remote_mount_},
|
||||
{"IsRemoteMount", is_remote_mount_},
|
||||
{"RemoteClientPoolSize", remote_client_pool_size_},
|
||||
{"RemoteMaxConnections", remote_max_connections_},
|
||||
{"RemoteHostNameOrIp", remote_host_name_or_ip_},
|
||||
{"RemotePort", remote_port_},
|
||||
{"RemoteReceiveTimeoutSeconds", remote_receive_timeout_secs_},
|
||||
{"RemoteSendTimeoutSeconds", remote_send_timeout_secs_},
|
||||
{"RemoteToken", remote_token_},
|
||||
},
|
||||
},
|
||||
{"RetryReadCount", retry_read_count_},
|
||||
{"RingBufferFileSize", ring_buffer_file_size_},
|
||||
{"S3Config",
|
||||
{
|
||||
{"AccessKey", s3_config_.access_key},
|
||||
{"Bucket", s3_config_.bucket},
|
||||
{"CacheTimeoutSeconds", s3_config_.cache_timeout_secs},
|
||||
{"EncryptionToken", s3_config_.encryption_token},
|
||||
{"Region", s3_config_.region},
|
||||
{"SecretKey", s3_config_.secret_key},
|
||||
{"TimeoutMs", s3_config_.timeout_ms},
|
||||
{"URL", s3_config_.url},
|
||||
{"UsePathStyle", s3_config_.use_path_style},
|
||||
{"UseRegionInURL", s3_config_.use_region_in_url},
|
||||
}},
|
||||
{"Version", version_}
|
||||
};
|
||||
{"EnableMaxCacheSize", enable_max_cache_size_},
|
||||
{"EncryptConfig",
|
||||
{
|
||||
{"EncryptionToken", encrypt_config_.encryption_token},
|
||||
{"Path", encrypt_config_.path},
|
||||
}},
|
||||
{"EventLevel", event_level_to_string(event_level_)},
|
||||
{"EvictionDelayMinutes", eviction_delay_mins_},
|
||||
{"EvictionUsesAccessedTime", eviction_uses_accessed_time_},
|
||||
{"HighFreqIntervalSeconds", high_freq_interval_secs_},
|
||||
{"HostConfig",
|
||||
{
|
||||
{"AgentString", hc_.agent_string},
|
||||
{"ApiPassword", hc_.api_password},
|
||||
{"ApiPort", hc_.api_port},
|
||||
{"HostNameOrIp", hc_.host_name_or_ip},
|
||||
{"TimeoutMs", hc_.timeout_ms},
|
||||
}},
|
||||
{"LowFreqIntervalSeconds", low_freq_interval_secs_},
|
||||
{"MaxCacheSizeBytes", max_cache_size_bytes_},
|
||||
{"MaxUploadCount", max_upload_count_},
|
||||
{"OnlineCheckRetrySeconds", online_check_retry_secs_},
|
||||
{"OrphanedFileRetentionDays", orphaned_file_retention_days_},
|
||||
{"PreferredDownloadType", preferred_download_type_},
|
||||
{"ReadAheadCount", read_ahead_count_},
|
||||
{
|
||||
"RemoteMount",
|
||||
{
|
||||
{"EnableRemoteMount", enable_remote_mount_},
|
||||
{"IsRemoteMount", is_remote_mount_},
|
||||
{"RemoteClientPoolSize", remote_client_pool_size_},
|
||||
{"RemoteMaxConnections", remote_max_connections_},
|
||||
{"RemoteHostNameOrIp", remote_host_name_or_ip_},
|
||||
{"RemotePort", remote_port_},
|
||||
{"RemoteReceiveTimeoutSeconds", remote_receive_timeout_secs_},
|
||||
{"RemoteSendTimeoutSeconds", remote_send_timeout_secs_},
|
||||
{"RemoteToken", remote_token_},
|
||||
},
|
||||
},
|
||||
{"RetryReadCount", retry_read_count_},
|
||||
{"RingBufferFileSize", ring_buffer_file_size_},
|
||||
{"S3Config",
|
||||
{
|
||||
{"AccessKey", s3_config_.access_key},
|
||||
{"Bucket", s3_config_.bucket},
|
||||
{"CacheTimeoutSeconds", s3_config_.cache_timeout_secs},
|
||||
{"EncryptionToken", s3_config_.encryption_token},
|
||||
{"Region", s3_config_.region},
|
||||
{"SecretKey", s3_config_.secret_key},
|
||||
{"TimeoutMs", s3_config_.timeout_ms},
|
||||
{"URL", s3_config_.url},
|
||||
{"UsePathStyle", s3_config_.use_path_style},
|
||||
{"UseRegionInURL", s3_config_.use_region_in_url},
|
||||
}},
|
||||
{"Version", version_}};
|
||||
|
||||
if (prov_ == provider_type::encrypt) {
|
||||
ret.erase("ChunkDownloaderTimeoutSeconds");
|
||||
|
@ -680,7 +680,7 @@ void fuse_base::raise_fuse_event(std::string function_name,
|
||||
}
|
||||
|
||||
if (((config_.get_event_level() >= fuse_event::level) && (ret != 0)) ||
|
||||
(config_.get_event_level() >= event_level::verbose)) {
|
||||
(config_.get_event_level() >= event_level::trace)) {
|
||||
event_system::instance().raise<fuse_event>(
|
||||
utils::string::right_trim(function_name, '_'), api_path, ret);
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ namespace repertory::remote_fuse {
|
||||
if (config_.get_enable_drive_events() && \
|
||||
(((config_.get_event_level() >= remote_fuse_server_event::level) && \
|
||||
(ret < 0)) || \
|
||||
(config_.get_event_level() >= event_level::verbose))) \
|
||||
(config_.get_event_level() >= event_level::trace))) \
|
||||
event_system::instance().raise<remote_fuse_server_event>(func, file, ret)
|
||||
|
||||
// clang-format off
|
||||
|
@ -34,7 +34,7 @@ namespace repertory::remote_winfsp {
|
||||
if (config_.get_enable_drive_events() && \
|
||||
(((config_.get_event_level() >= remote_winfsp_client_event::level) && \
|
||||
(ret != STATUS_SUCCESS)) || \
|
||||
(config_.get_event_level() >= event_level::verbose))) \
|
||||
(config_.get_event_level() >= event_level::trace))) \
|
||||
event_system::instance().raise<remote_winfsp_client_event>(func, file, ret)
|
||||
|
||||
// clang-format off
|
||||
|
@ -52,7 +52,7 @@ namespace repertory::remote_winfsp {
|
||||
if (config_.get_enable_drive_events() && \
|
||||
(((config_.get_event_level() >= remote_winfsp_server_event::level) && \
|
||||
(ret != STATUS_SUCCESS)) || \
|
||||
(config_.get_event_level() >= event_level::verbose))) \
|
||||
(config_.get_event_level() >= event_level::trace))) \
|
||||
event_system::instance().raise<remote_winfsp_server_event>(func, file, ret)
|
||||
|
||||
// clang-format off
|
||||
|
@ -51,7 +51,7 @@ E_SIMPLE3(winfsp_event, debug, true,
|
||||
if (config_.get_enable_drive_events() && \
|
||||
(((config_.get_event_level() >= winfsp_event::level) && \
|
||||
(ret != STATUS_SUCCESS)) || \
|
||||
(config_.get_event_level() >= event_level::verbose))) \
|
||||
(config_.get_event_level() >= event_level::trace))) \
|
||||
event_system::instance().raise<winfsp_event>(func, file, ret)
|
||||
|
||||
winfsp_drive::winfsp_service::winfsp_service(
|
||||
|
@ -21,6 +21,11 @@
|
||||
*/
|
||||
#include "events/consumers/logging_consumer.hpp"
|
||||
|
||||
#include "events/events.hpp"
|
||||
#include "spdlog/spdlog.h"
|
||||
#include "spdlog/async.h"
|
||||
#include "spdlog/sinks/rotating_file_sink.h"
|
||||
#include "spdlog/sinks/stdout_color_sinks.h"
|
||||
#include "utils/path_utils.hpp"
|
||||
|
||||
namespace repertory {
|
||||
@ -32,21 +37,45 @@ logging_consumer::logging_consumer(event_level level, std::string log_directory)
|
||||
[this](const event_level_changed &changed) {
|
||||
event_level_ = event_level_from_string(
|
||||
changed.get_new_event_level().get<std::string>());
|
||||
switch (event_level_) {}
|
||||
});
|
||||
|
||||
spdlog::init_thread_pool(8192, 1);
|
||||
std::vector<spdlog::sink_ptr> sinks{
|
||||
std::make_shared<spdlog::sinks::stdout_color_sink_mt>(),
|
||||
std::make_shared<spdlog::sinks::rotating_file_sink_mt>(
|
||||
utils::path::combine(log_directory_, {"repertory.log"}),
|
||||
MAX_LOG_FILE_SIZE, MAX_LOG_FILES),
|
||||
};
|
||||
|
||||
spdlog::register_logger(std::make_shared<spdlog::async_logger>(
|
||||
"logger", sinks.begin(), sinks.end(), spdlog::thread_pool(),
|
||||
spdlog::async_overflow_policy::block));
|
||||
}
|
||||
|
||||
logging_consumer::~logging_consumer() { E_CONSUMER_RELEASE(); }
|
||||
|
||||
void logging_consumer::process_event(const event &event) {
|
||||
/* auto msg = ([&]() -> std::string {
|
||||
struct tm local_time {};
|
||||
utils::get_local_time_now(local_time);
|
||||
|
||||
std::stringstream ss;
|
||||
ss << std::put_time(&local_time, "%F %T") << "|"
|
||||
<< event_level_to_string(event->get_event_level()).c_str() << "|"
|
||||
<< event->get_single_line().c_str() << std::endl;
|
||||
return ss.str();
|
||||
})(); */
|
||||
switch (event.get_event_level()) {
|
||||
case event_level::critical:
|
||||
spdlog::critical(event.get_single_line());
|
||||
break;
|
||||
case event_level::error:
|
||||
spdlog::error(event.get_single_line());
|
||||
break;
|
||||
case event_level::warn:
|
||||
spdlog::warn(event.get_single_line());
|
||||
break;
|
||||
case event_level::info:
|
||||
spdlog::info(event.get_single_line());
|
||||
break;
|
||||
case event_level::debug:
|
||||
spdlog::debug(event.get_single_line());
|
||||
break;
|
||||
case event_level::trace:
|
||||
default:
|
||||
spdlog::trace(event.get_single_line());
|
||||
break;
|
||||
}
|
||||
}
|
||||
} // namespace repertory
|
||||
|
@ -26,34 +26,49 @@
|
||||
namespace repertory {
|
||||
auto event_level_from_string(std::string level) -> event_level {
|
||||
level = utils::string::to_lower(level);
|
||||
if (level == "critical" || level == "event_level::critical") {
|
||||
return event_level::critical;
|
||||
}
|
||||
|
||||
if (level == "debug" || level == "event_level::debug") {
|
||||
return event_level::debug;
|
||||
} else if (level == "warn" || level == "event_level::warn") {
|
||||
return event_level::warn;
|
||||
} else if (level == "normal" || level == "event_level::normal") {
|
||||
return event_level::normal;
|
||||
} else if (level == "error" || level == "event_level::error") {
|
||||
return event_level::error;
|
||||
} else if (level == "verbose" || level == "event_level::verbose") {
|
||||
return event_level::verbose;
|
||||
}
|
||||
return event_level::normal;
|
||||
|
||||
if (level == "warn" || level == "event_level::warn") {
|
||||
return event_level::warn;
|
||||
}
|
||||
|
||||
if (level == "info" || level == "event_level::info") {
|
||||
return event_level::info;
|
||||
}
|
||||
|
||||
if (level == "error" || level == "event_level::error") {
|
||||
return event_level::error;
|
||||
}
|
||||
|
||||
if (level == "trace" || level == "event_level::trace") {
|
||||
return event_level::trace;
|
||||
}
|
||||
|
||||
return event_level::info;
|
||||
}
|
||||
|
||||
auto event_level_to_string(const event_level &level) -> std::string {
|
||||
auto event_level_to_string(event_level level) -> std::string {
|
||||
switch (level) {
|
||||
case event_level::critical:
|
||||
return "critical";
|
||||
case event_level::debug:
|
||||
return "debug";
|
||||
case event_level::error:
|
||||
return "error";
|
||||
case event_level::normal:
|
||||
return "normal";
|
||||
case event_level::info:
|
||||
return "info";
|
||||
case event_level::warn:
|
||||
return "warn";
|
||||
case event_level::verbose:
|
||||
return "verbose";
|
||||
case event_level::trace:
|
||||
return "trace";
|
||||
default:
|
||||
return "normal";
|
||||
return "info";
|
||||
}
|
||||
}
|
||||
} // namespace repertory
|
||||
|
@ -38,12 +38,12 @@ void polling::frequency_thread(
|
||||
if (kv.second.freq == freq) {
|
||||
futures.emplace_back(
|
||||
std::async(std::launch::async, [this, &freq, kv]() -> void {
|
||||
if (config_->get_event_level() == event_level::verbose ||
|
||||
if (config_->get_event_level() == event_level::trace ||
|
||||
freq != frequency::second) {
|
||||
event_system::instance().raise<polling_item_begin>(kv.first);
|
||||
}
|
||||
kv.second.action();
|
||||
if (config_->get_event_level() == event_level::verbose ||
|
||||
if (config_->get_event_level() == event_level::trace ||
|
||||
freq != frequency::second) {
|
||||
event_system::instance().raise<polling_item_end>(kv.first);
|
||||
}
|
||||
|
@ -78,7 +78,7 @@ protected:
|
||||
.empty());
|
||||
EXPECT_FALSE(
|
||||
config->set_value_by_name("S3Config.Bucket", "repertory").empty());
|
||||
config->set_event_level(event_level::verbose);
|
||||
config->set_event_level(event_level::trace);
|
||||
config->set_enable_drive_events(true);
|
||||
event_system::instance().start();
|
||||
|
||||
|
@ -541,7 +541,7 @@ TEST(fuse_drive, all_tests) {
|
||||
app_config src_cfg(provider_type::s3,
|
||||
utils::path::combine(get_test_dir(), {"storj"}));
|
||||
config_ptr->set_enable_drive_events(true);
|
||||
config_ptr->set_event_level(event_level::verbose);
|
||||
config_ptr->set_event_level(event_level::trace);
|
||||
config_ptr->set_s3_config(src_cfg.get_s3_config());
|
||||
}
|
||||
|
||||
|
@ -926,7 +926,7 @@ TEST(remote_fuse, all_tests) {
|
||||
config.set_remote_port(port);
|
||||
config.set_remote_token("testtoken");
|
||||
config.set_enable_drive_events(true);
|
||||
config.set_event_level(event_level::verbose);
|
||||
config.set_event_level(event_level::trace);
|
||||
|
||||
event_system::instance().start();
|
||||
#if defined(_WIN32)
|
||||
|
@ -498,7 +498,7 @@ TEST(remote_winfsp, all_tests) {
|
||||
config.set_remote_port(port);
|
||||
config.set_remote_token("testtoken");
|
||||
config.set_enable_drive_events(true);
|
||||
config.set_event_level(event_level::verbose);
|
||||
config.set_event_level(event_level::trace);
|
||||
|
||||
event_system::instance().start();
|
||||
#if defined(_WIN32)
|
||||
|
Loading…
x
Reference in New Issue
Block a user