/* * Copyright (c) Facebook, Inc. and its affiliates. * * This software may be used and distributed according to the terms of the * GNU General Public License version 2. */ #include "eden/fs/telemetry/StructuredLoggerFactory.h" #include #include "eden/fs/config/EdenConfig.h" #include "eden/fs/telemetry/NullStructuredLogger.h" #ifndef _WIN32 #include "eden/fs/telemetry/ScubaStructuredLogger.h" #include "eden/fs/telemetry/SubprocessScribeLogger.h" #endif namespace facebook { namespace eden { std::unique_ptr makeDefaultStructuredLogger( const EdenConfig& config, SessionInfo sessionInfo) { const auto& binary = config.scribeLogger.getValue(); const auto& category = config.scribeCategory.getValue(); if (binary.empty()) { return std::make_unique(); } if (category.empty()) { XLOG(WARN) << "Scribe binary specified, but no category specified. Structured logging is disabled."; return std::make_unique(); } #ifndef _WIN32 auto logger = std::make_unique(binary.c_str(), category); return std::make_unique( std::move(logger), std::move(sessionInfo)); #else return std::make_unique(); #endif } } // namespace eden } // namespace facebook