< prev index next >
src/jdk.jpackage/windows/native/libjpackage/Log.cpp
Print this page
*** 96,107 ****
StderrLogAppender::StderrLogAppender() {
}
/*static*/
! Logger& Logger::defaultLogger()
! {
Logger* reply = reinterpret_cast<Logger*>(defaultLoggerMemory);
if (!reply->appender) {
// Memory leak by design. Not an issue at all as this is global
// object. OS will do resources clean up anyways when application
--- 96,106 ----
StderrLogAppender::StderrLogAppender() {
}
/*static*/
! Logger& Logger::defaultLogger() {
Logger* reply = reinterpret_cast<Logger*>(defaultLoggerMemory);
if (!reply->appender) {
// Memory leak by design. Not an issue at all as this is global
// object. OS will do resources clean up anyways when application
*** 121,166 ****
std::memcpy(moduleName, mname.c_str(), mname.size());
moduleName[mname.size()] = TCHAR(0);
// if JPACKAGE_DEBUG environment variable is NOT set to "true" disable
// logging.
! if (SysInfo::getEnvVariable(std::nothrow, L"JPACKAGE_DEBUG") != L"true") {
reply->appender = &nopLogApender;
}
state = Initialized;
}
return *reply;
}
Logger::Logger(LogAppender& appender, LogLevel logLevel)
! : level(logLevel), appender(&appender)
! {
}
! void Logger::setLogLevel(LogLevel logLevel)
! {
level = logLevel;
}
! Logger::~Logger()
! {
}
! bool Logger::isLoggable(LogLevel logLevel) const
! {
return logLevel >= level;
}
! void Logger::log(LogLevel logLevel, LPCTSTR fileName, int lineNum, LPCTSTR funcName, const tstring& message) const
! {
LogEvent logEvent;
! // [YYYY/MM/DD HH:MM:SS.ms, <module> (PID: processID, TID: threadID), fileName:lineNum (funcName)]
! // <tab>LEVEL: message
GetLocalTime(&logEvent.ts);
logEvent.pid = GetCurrentProcessId();
logEvent.tid = GetCurrentThreadId();
logEvent.moduleName = moduleName;
--- 120,162 ----
std::memcpy(moduleName, mname.c_str(), mname.size());
moduleName[mname.size()] = TCHAR(0);
// if JPACKAGE_DEBUG environment variable is NOT set to "true" disable
// logging.
! if (SysInfo::getEnvVariable(std::nothrow,
! L"JPACKAGE_DEBUG") != L"true") {
reply->appender = &nopLogApender;
}
state = Initialized;
}
return *reply;
}
Logger::Logger(LogAppender& appender, LogLevel logLevel)
! : level(logLevel), appender(&appender) {
}
! void Logger::setLogLevel(LogLevel logLevel) {
level = logLevel;
}
! Logger::~Logger() {
}
! bool Logger::isLoggable(LogLevel logLevel) const {
return logLevel >= level;
}
! void Logger::log(LogLevel logLevel, LPCTSTR fileName, int lineNum,
! LPCTSTR funcName, const tstring& message) const {
LogEvent logEvent;
! // [YYYY/MM/DD HH:MM:SS.ms, <module> (PID: processID, TID: threadID),
! // fileName:lineNum (funcName)] <tab>LEVEL: message
GetLocalTime(&logEvent.ts);
logEvent.pid = GetCurrentProcessId();
logEvent.tid = GetCurrentThreadId();
logEvent.moduleName = moduleName;
*** 175,207 ****
void StderrLogAppender::append(const LogEvent& v)
{
const tstring out = tstrings::unsafe_format(format,
! unsigned(v.ts.wYear), unsigned(v.ts.wMonth), unsigned(v.ts.wDay), // date
! unsigned(v.ts.wHour), unsigned(v.ts.wMinute), unsigned(v.ts.wSecond), unsigned(v.ts.wMilliseconds), // time
v.moduleName.c_str(), v.pid, v.tid,
v.fileName.c_str(), v.lineNum, v.funcName.c_str(),
v.logLevel.c_str(),
v.message.c_str());
std::cerr << tstrings::toUtf8(out);
}
// Logger::ScopeTracer
! Logger::ScopeTracer::ScopeTracer(Logger &logger, LogLevel logLevel, LPCTSTR fileName, int lineNum, LPCTSTR funcName, const tstring& scopeName)
! : log(logger), level(logLevel), file(fileName), line(lineNum), func(funcName), scope(scopeName), needLog(logger.isLoggable(logLevel))
! {
if (needLog) {
! log.log(level, file.c_str(), line, func.c_str(), tstrings::any() << "Entering " << scope);
}
}
Logger::ScopeTracer::~ScopeTracer() {
if (needLog) {
// we don't know what line is end of scope at, so specify line 0
// and add note about line when the scope begins
log.log(level, file.c_str(), 0, func.c_str(),
! tstrings::any() << "Exiting " << scope << " (entered at " << FileUtils::basename(file) << ":" << line << ")");
}
}
--- 171,208 ----
void StderrLogAppender::append(const LogEvent& v)
{
const tstring out = tstrings::unsafe_format(format,
! unsigned(v.ts.wYear), unsigned(v.ts.wMonth), unsigned(v.ts.wDay),
! unsigned(v.ts.wHour), unsigned(v.ts.wMinute), unsigned(v.ts.wSecond),
! unsigned(v.ts.wMilliseconds),
v.moduleName.c_str(), v.pid, v.tid,
v.fileName.c_str(), v.lineNum, v.funcName.c_str(),
v.logLevel.c_str(),
v.message.c_str());
std::cerr << tstrings::toUtf8(out);
}
// Logger::ScopeTracer
! Logger::ScopeTracer::ScopeTracer(Logger &logger, LogLevel logLevel,
! LPCTSTR fileName, int lineNum, LPCTSTR funcName,
! const tstring& scopeName) : log(logger), level(logLevel),
! file(fileName), line(lineNum),
! func(funcName), scope(scopeName), needLog(logger.isLoggable(logLevel)) {
if (needLog) {
! log.log(level, file.c_str(), line, func.c_str(),
! tstrings::any() << "Entering " << scope);
}
}
Logger::ScopeTracer::~ScopeTracer() {
if (needLog) {
// we don't know what line is end of scope at, so specify line 0
// and add note about line when the scope begins
log.log(level, file.c_str(), 0, func.c_str(),
! tstrings::any() << "Exiting " << scope << " (entered at "
! << FileUtils::basename(file) << ":" << line << ")");
}
}
< prev index next >