mirror of
https://github.com/aseprite/aseprite.git
synced 2024-12-27 03:16:58 +00:00
Move LOG() to base library
Changes: - Moved verbose_log (in app module) to base_log (in base library) - Added base_set_log_filename() to start logging and close the log file - LoggerModule() is implemented using thse new base library functions Fix #899
This commit is contained in:
parent
3bcda8c1b1
commit
7ab863303e
@ -13,67 +13,32 @@
|
||||
|
||||
#include "app/app.h"
|
||||
#include "app/resource_finder.h"
|
||||
#include "ui/base.h"
|
||||
|
||||
#include <cstdarg>
|
||||
#include <cstdio>
|
||||
#include <cstring>
|
||||
#include <string>
|
||||
#include "base/log.h"
|
||||
|
||||
namespace app {
|
||||
|
||||
static FILE* log_fileptr = NULL;
|
||||
static LoggerModule* logger_instance = NULL;
|
||||
|
||||
LoggerModule::LoggerModule(bool verbose)
|
||||
: m_verbose(verbose)
|
||||
{
|
||||
logger_instance = this;
|
||||
|
||||
if (verbose) {
|
||||
app::ResourceFinder rf(false);
|
||||
rf.includeUserDir("aseprite.log");
|
||||
auto filename = rf.defaultFilename();
|
||||
base_set_log_filename(filename.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
LoggerModule::~LoggerModule()
|
||||
{
|
||||
LOG("Logger module: shutting down (this is the last line)\n");
|
||||
|
||||
if (log_fileptr) {
|
||||
fclose(log_fileptr);
|
||||
log_fileptr = NULL;
|
||||
}
|
||||
|
||||
logger_instance = NULL;
|
||||
// Close log file
|
||||
base_set_log_filename("");
|
||||
logger_instance = nullptr;
|
||||
}
|
||||
|
||||
} // namespace app
|
||||
|
||||
void verbose_log(const char* format, ...)
|
||||
{
|
||||
if (app::logger_instance && !app::logger_instance->isVerbose())
|
||||
return;
|
||||
|
||||
if (!app::log_fileptr) {
|
||||
std::string filename;
|
||||
app::ResourceFinder rf(false);
|
||||
rf.includeUserDir("aseprite.log");
|
||||
filename = rf.defaultFilename();
|
||||
|
||||
if (filename.size() > 0)
|
||||
app::log_fileptr = fopen(filename.c_str(), "w");
|
||||
}
|
||||
|
||||
if (app::log_fileptr) {
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
|
||||
vfprintf(app::log_fileptr, format, ap);
|
||||
fflush(app::log_fileptr);
|
||||
|
||||
#ifdef _DEBUG
|
||||
va_start(ap, format);
|
||||
vfprintf(stderr, format, ap);
|
||||
fflush(stderr);
|
||||
#endif
|
||||
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -51,6 +51,7 @@ set(BASE_SOURCES
|
||||
file_handle.cpp
|
||||
fs.cpp
|
||||
launcher.cpp
|
||||
log.cpp
|
||||
mem_utils.cpp
|
||||
memory.cpp
|
||||
memory_dump.cpp
|
||||
|
56
src/base/log.cpp
Normal file
56
src/base/log.cpp
Normal file
@ -0,0 +1,56 @@
|
||||
// Aseprite Base Library
|
||||
// Copyright (c) 2001-2015 David Capello
|
||||
//
|
||||
// This file is released under the terms of the MIT license.
|
||||
// Read LICENSE.txt for more information.
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "base/log.h"
|
||||
|
||||
#include "base/file_handle.h"
|
||||
|
||||
#include <cstdarg>
|
||||
#include <cstdio>
|
||||
#include <cstring>
|
||||
#include <string>
|
||||
|
||||
static FILE* log_fileptr = nullptr;
|
||||
static std::string log_filename;
|
||||
|
||||
void base_set_log_filename(const char* filename)
|
||||
{
|
||||
if (log_fileptr) {
|
||||
fclose(log_fileptr);
|
||||
log_fileptr = nullptr;
|
||||
}
|
||||
log_filename = filename;
|
||||
}
|
||||
|
||||
void base_log(const char* format, ...)
|
||||
{
|
||||
if (!log_fileptr) {
|
||||
if (log_filename.empty())
|
||||
return;
|
||||
|
||||
log_fileptr = base::open_file_raw(log_filename, "w");
|
||||
}
|
||||
|
||||
if (log_fileptr) {
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
|
||||
vfprintf(log_fileptr, format, ap);
|
||||
fflush(log_fileptr);
|
||||
|
||||
#ifdef _DEBUG
|
||||
va_start(ap, format);
|
||||
vfprintf(stderr, format, ap);
|
||||
fflush(stderr);
|
||||
#endif
|
||||
|
||||
va_end(ap);
|
||||
}
|
||||
}
|
19
src/base/log.h
Normal file
19
src/base/log.h
Normal file
@ -0,0 +1,19 @@
|
||||
// Aseprite Base Library
|
||||
// Copyright (c) 2001-2015 David Capello
|
||||
//
|
||||
// This file is released under the terms of the MIT license.
|
||||
// Read LICENSE.txt for more information.
|
||||
|
||||
#ifndef BASE_LOG_H_INCLUDED
|
||||
#define BASE_LOG_H_INCLUDED
|
||||
#pragma once
|
||||
|
||||
// Define BASE_DONT_DEFINE_LOG_MACRO in case that you don't need LOG
|
||||
#ifndef BASE_DONT_DEFINE_LOG_MACRO
|
||||
#define LOG base_log
|
||||
#endif
|
||||
|
||||
void base_set_log_filename(const char* filename);
|
||||
void base_log(const char* format, ...);
|
||||
|
||||
#endif
|
@ -35,10 +35,6 @@
|
||||
#define UPDATE_URL WEBSITE "update/?xml=1"
|
||||
#define COPYRIGHT "Copyright (C) 2001-2015 David Capello"
|
||||
|
||||
#define LOG verbose_log
|
||||
|
||||
// verbose_log() is defined in src/app/log.cpp and used through LOG macro
|
||||
void verbose_log(const char* format, ...);
|
||||
|
||||
#include "base/base.h"
|
||||
#include "base/debug.h"
|
||||
#include "base/log.h"
|
||||
|
Loading…
Reference in New Issue
Block a user