Skip to content

Commit ac40905

Browse files
committed
Updates to log file format printing, showing settings
Signed-off-by: Russell McGuire <russell.w.mcguire@intel.com>
1 parent e3e2d01 commit ac40905

2 files changed

Lines changed: 43 additions & 7 deletions

File tree

source/loader/ze_loader.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -623,7 +623,7 @@ namespace loader
623623
zel_logger->log_to_console = false;
624624
}
625625

626-
if (zel_logger->logging_enabled) {
626+
if (zel_logger->getLevel() != loader::LogLevel::off) {
627627
std::string ver_msg = "Loader Version " +
628628
std::to_string(LOADER_VERSION_MAJOR) + "." +
629629
std::to_string(LOADER_VERSION_MINOR) + "." +

source/utils/ze_logger.cpp

Lines changed: 42 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#include <process.h>
2222
#include <windows.h>
2323
#include <userenv.h>
24+
#include <direct.h> // _mkdir
2425
#define STDERR_FD 2
2526
#define STDOUT_FD 1
2627
#define GET_PID() _getpid()
@@ -51,6 +52,7 @@ static bool winEnableAnsiColor(int fd) {
5152
#else
5253
#include <unistd.h>
5354
#include <sys/types.h>
55+
#include <sys/stat.h>
5456
#include <pwd.h>
5557
#define ISATTY_COLOR(fd) (isatty(fd) != 0)
5658
#define GET_PID() getpid()
@@ -492,19 +494,53 @@ std::shared_ptr<ZeLogger> createLogger() {
492494
log_pattern = custom_pattern;
493495
}
494496

497+
// When logging is disabled, return a console-sink logger at level off.
498+
// This avoids any file system access (open/create) for the default case.
499+
if (!logging_enabled) {
500+
return std::make_shared<ZeLogger>(/*use_stderr=*/true, LogLevel::off, log_pattern);
501+
}
502+
495503
LogLevel level = logLevelFromString(log_level);
496504
const bool log_console = getenv_tobool("ZEL_LOADER_LOG_CONSOLE");
497505

498506
std::shared_ptr<ZeLogger> logger;
499-
if (!log_console) {
500-
logger = std::make_shared<ZeLogger>(full_log_file_path, level, log_pattern);
501-
} else {
507+
std::string output_dest;
508+
if (log_console) {
502509
logger = std::make_shared<ZeLogger>(/*use_stderr=*/true, level, log_pattern);
510+
output_dest = "stderr (console)";
511+
} else {
512+
// Create the log directory only if it does not already exist.
513+
#ifdef _WIN32
514+
DWORD attrs = GetFileAttributesA(log_directory.c_str());
515+
if (attrs == INVALID_FILE_ATTRIBUTES || !(attrs & FILE_ATTRIBUTE_DIRECTORY)) {
516+
_mkdir(log_directory.c_str());
517+
}
518+
#else
519+
struct stat st{};
520+
if (stat(log_directory.c_str(), &st) != 0 || !S_ISDIR(st.st_mode)) {
521+
mkdir(log_directory.c_str(), 0755);
522+
}
523+
#endif
524+
logger = std::make_shared<ZeLogger>(full_log_file_path, level, log_pattern);
525+
output_dest = full_log_file_path;
503526
}
504527

505-
if (!logging_enabled) {
506-
logger->setLevel(LogLevel::off);
507-
}
528+
// Emit the active configuration as the first log message so the user can
529+
// confirm what was enabled and where output is going.
530+
std::string cfg;
531+
cfg = "Loader logging enabled:";
532+
cfg += "\n Output : " + output_dest;
533+
cfg += "\n Level : " + log_level;
534+
cfg += "\n Pattern : " + log_pattern;
535+
if (!getenv_string("ZEL_LOADER_LOG_DIR").empty())
536+
cfg += "\n Log dir : " + log_directory + " (ZEL_LOADER_LOG_DIR)";
537+
if (!getenv_string("ZEL_LOADER_LOG_FILE").empty())
538+
cfg += "\n Log file : " + loader_file + " (ZEL_LOADER_LOG_FILE, deprecated)";
539+
if (!getenv_string("ZEL_LOADER_LOGGING_LEVEL").empty())
540+
cfg += "\n Level src : ZEL_LOADER_LOGGING_LEVEL";
541+
if (!getenv_string("ZEL_LOADER_LOG_PATTERN").empty())
542+
cfg += "\n Pattern src: ZEL_LOADER_LOG_PATTERN";
543+
logger->info(cfg);
508544

509545
return logger;
510546
}

0 commit comments

Comments
 (0)