Project

General

Profile

Bug #1145 ยป poc.cc

Sample file for reproducing the bug - Marco Eichelberg, 2025-01-17 15:25

 
// Sample program posted by DCMTK forum user vignesh on 2024-09-18
// Forum post https://forum.dcmtk.org/viewtopic.php?t=5411

// Note: This needs to be compiled on Windows and requires Boost.

#include <boost/dll.hpp>
#include <boost/filesystem.hpp>
#include <dcmtk/oflog/oflog.h>
#include <dcmtk/oflog/configrt.h>
#include "dcmtk/config/osconfig.h"
#include "dcmtk/oflog/oflog.h"

using namespace std;
using namespace dcmtk::log4cplus;
extern OFLogger sample_logger;

#define LINFO(msg) OFLOG_INFO(sample_logger, msg)
#define LDEBUG(msg) OFLOG_DEBUG(sample_logger, msg)
#define LERROR(msg) OFLOG_ERROR(sample_logger, msg)
#define LWARN(msg) OFLOG_WARN(sample_logger, msg)
#define LTRACE(msg) OFLOG_TRACE(sample_logger, msg)
#define LFATAL(msg) OFLOG_FATAL(sample_logger, msg)

class LogHandler
{
public:
std::string logLevel;
void InitializeLogger(std::string fileName);
void SetLogProperties(helpers::Properties& props, std::string fileName, std::string logLevel);
};

void SetLogProperties(helpers::Properties& props, std::string fileName, std::string logLevel)
{
#define SET(propertyKey, propertyValue) props.setProperty(propertyKey, propertyValue)
static const char* pattern = "[%-6i][%-6t][%D{%Y-%m-%d %H:%M:%S.%q}] %-5p: %m%n";
SET("log4cplus.logger.Service", "ALL");
SET("log4cplus.logger.Session", "ALL");
SET("log4cplus.appender.logfile", "log4cplus::RollingFileAppender");
if (logLevel == "debug")
{
SET("log4cplus.rootLogger", "DEBUG, console , logfile");
SET("log4cplus.appender.console", "log4cplus::ConsoleAppender");
SET("log4cplus.appender.console.ImmediateFlush", "true");
SET("log4cplus.appender.console.layout", "log4cplus::PatternLayout");
SET("log4cplus.appender.console.layout.ConversionPattern", pattern);
SET("log4cplus.appender.logfile.MaxFileSize", "5MB");
}
else
{
SET("log4cplus.rootLogger", "DEBUG, logfile");
SET("log4cplus.appender.logfile.MaxFileSize", "3MB");
}
SET("log4cplus.appender.logfile.Append", "true");
SET("log4cplus.appender.logfile.ImmediateFlush", "true");
SET("log4cplus.appender.logfile.MaxBackupIndex", "10");
SET("log4cplus.appender.logfile.File", fileName.c_str());
SET("log4cplus.appender.logfile.layout", "log4cplus::PatternLayout");
SET("log4cplus.appender.logfile.layout.ConversionPattern", pattern);
#undef SET
}

void InitializeLogger(std::string fileName)
{
helpers::Properties props(DCMTK_LOG4CPLUS_EXPORT(""));
if (props.size() == 0)
SetLogProperties(props, fileName, "debug");
unsigned int flags = 0;
flags |= PropertyConfigurator::fRecursiveExpansion;

flags |= PropertyConfigurator::fShadowEnvironment;
PropertyConfigurator conf(props, Logger::getDefaultHierarchy(), flags);
conf.configure();
Logger root = Logger::getRoot();
root.setLogLevel(OFLogger::INFO_LOG_LEVEL);
OFLog::reconfigure();
}

int main()
{
InitializeLogger("D:/log/sample.log");
// here I have read a json file and print the same
return 0;
}

    (1-1/1)