Skip to content

Commit

Permalink
add custom LogFlag
Browse files Browse the repository at this point in the history
  • Loading branch information
L1MeN9Yu committed Sep 30, 2019
1 parent 3efb8b0 commit 565add1
Show file tree
Hide file tree
Showing 11 changed files with 46 additions and 40 deletions.
20 changes: 12 additions & 8 deletions Senna/Backend/Core/SennaCore.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,22 +10,26 @@
#include "Singleton.h"
#include "SennaContext.h"

void senna_add_logger(const char *name, const char *pattern) {
Singleton<SennaContext>::sharedInstance()->createLogger(name, pattern);
void senna_add_logger(const char *name, unsigned int flag, const char *pattern) {
spdlog::level::level_enum level = spdlog::level::level_enum(flag);
Singleton<SennaContext>::sharedInstance()->createLogger(name, level, pattern);
}

void senna_drop_logger(const char *name) {
Singleton<SennaContext>::sharedInstance()->dropLogger(name);
}

void senna_logger_enable_syslog(const char *name, const char *pattern, const char *ident, int option, int facility, bool format) {
Singleton<SennaContext>::sharedInstance()->enableSysLog(name, pattern, ident, option, facility, format);
void senna_logger_enable_syslog(const char *name, unsigned int flag, const char *pattern, const char *ident, int option, int facility, bool format) {
spdlog::level::level_enum level = spdlog::level::level_enum(flag);
Singleton<SennaContext>::sharedInstance()->enableSysLog(name, level, pattern, ident, option, facility, format);
}

void senna_logger_enable_rotating_file(const char *name, const char *pattern, const char *file_path, size_t max_size, size_t max_files) {
Singleton<SennaContext>::sharedInstance()->enableRotatingFileLog(name, pattern, file_path, max_size, max_files);
void senna_logger_enable_rotating_file(const char *name, unsigned int flag, const char *pattern, const char *file_path, size_t max_size, size_t max_files) {
spdlog::level::level_enum level = spdlog::level::level_enum(flag);
Singleton<SennaContext>::sharedInstance()->enableRotatingFileLog(name, level, pattern, file_path, max_size, max_files);
}

void senna_logger_enable_daily_file(const char *name, const char *pattern, const char *file_path, int hour, int minute) {
Singleton<SennaContext>::sharedInstance()->enableDailyFileLog(name, pattern, file_path, hour, minute);
void senna_logger_enable_daily_file(const char *name, unsigned int flag, const char *pattern, const char *file_path, int hour, int minute) {
spdlog::level::level_enum level = spdlog::level::level_enum(flag);
Singleton<SennaContext>::sharedInstance()->enableDailyFileLog(name, level, pattern, file_path, hour, minute);
}
8 changes: 4 additions & 4 deletions Senna/Backend/Core/SennaCore.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@
extern "C" {
#endif

extern void senna_add_logger(const char *name, const char *pattern);
extern void senna_add_logger(const char *name, unsigned int flag, const char *pattern);

extern void senna_drop_logger(const char *name);

extern void senna_logger_enable_syslog(const char *name, const char *pattern, const char *ident, int option, int facility, bool format);
extern void senna_logger_enable_syslog(const char *name, unsigned int flag, const char *pattern, const char *ident, int option, int facility, bool format);

extern void senna_logger_enable_rotating_file(const char *name, const char *pattern, const char *file_path, size_t max_size, size_t max_files);
extern void senna_logger_enable_rotating_file(const char *name, unsigned int flag, const char *pattern, const char *file_path, size_t max_size, size_t max_files);

extern void senna_logger_enable_daily_file(const char *name, const char *pattern, const char *file_path, int hour, int minute);
extern void senna_logger_enable_daily_file(const char *name, unsigned int flag, const char *pattern, const char *file_path, int hour, int minute);

#ifdef __cplusplus
};
Expand Down
4 changes: 2 additions & 2 deletions Senna/Backend/SennaContext/SennaContext.Base.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@
#include <spdlog/spdlog.h>
#include "SennaContext.h"

void SennaContext::createLogger(const char *name, const char *pattern) {
void SennaContext::createLogger(const char *name, spdlog::level::level_enum level, const char *pattern) {
auto stdout_sink = std::make_shared<spdlog::sinks::ansicolor_stdout_sink_mt>();
stdout_sink->set_pattern(pattern);
stdout_sink->set_level(spdlog::level::trace);
stdout_sink->set_level(level);

std::vector<spdlog::sink_ptr> sinks;
sinks.push_back(stdout_sink);
Expand Down
4 changes: 2 additions & 2 deletions Senna/Backend/SennaContext/SennaContext.DailyFile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
#include <spdlog/sinks/daily_file_sink.h>
#include "SennaContext.h"

void SennaContext::enableDailyFileLog(const char *name, const char *pattern, const char *file_path, int hour, int minute) {
void SennaContext::enableDailyFileLog(const char *name, spdlog::level::level_enum level, const char *pattern, const char *file_path, int hour, int minute) {
auto logger = spdlog::get(name);
if (!logger) {
printf("logger not exist !\n");
Expand All @@ -19,7 +19,7 @@ void SennaContext::enableDailyFileLog(const char *name, const char *pattern, con

auto daily_sink = std::make_shared<spdlog::sinks::daily_file_sink_mt>(file_path, hour, minute);
daily_sink->set_pattern(pattern);
daily_sink->set_level(spdlog::level::trace);
daily_sink->set_level(level);

logger->sinks().push_back(daily_sink);
}
4 changes: 2 additions & 2 deletions Senna/Backend/SennaContext/SennaContext.RotatingFile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
#include <spdlog/sinks/rotating_file_sink.h>
#include "SennaContext.h"

void SennaContext::enableRotatingFileLog(const char *name, const char *pattern, const char *file_path, size_t max_size, size_t max_files) {
void SennaContext::enableRotatingFileLog(const char *name, spdlog::level::level_enum level, const char *pattern, const char *file_path, size_t max_size, size_t max_files) {
auto logger = spdlog::get(name);
if (!logger) {
printf("logger not exist !\n");
Expand All @@ -19,7 +19,7 @@ void SennaContext::enableRotatingFileLog(const char *name, const char *pattern,

auto rotating_sink = std::make_shared<spdlog::sinks::rotating_file_sink_mt>(file_path, max_size, max_files);
rotating_sink->set_pattern(pattern);
rotating_sink->set_level(spdlog::level::trace);
rotating_sink->set_level(level);

logger->sinks().push_back(rotating_sink);
}
4 changes: 2 additions & 2 deletions Senna/Backend/SennaContext/SennaContext.SysLog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
#include <spdlog/sinks/syslog_sink.h>
#include "SennaContext.h"

void SennaContext::enableSysLog(const char *name, const char *pattern, const char *ident, int option, int facility, bool format) {
void SennaContext::enableSysLog(const char *name, spdlog::level::level_enum level, const char *pattern, const char *ident, int option, int facility, bool format) {
auto logger = spdlog::get(name);
if (!logger) {
printf("logger not exist !\n");
Expand All @@ -19,7 +19,7 @@ void SennaContext::enableSysLog(const char *name, const char *pattern, const cha

auto syslog_sink = std::make_shared<spdlog::sinks::syslog_sink_mt>(ident, option, facility, format);
syslog_sink->set_pattern(pattern);
syslog_sink->set_level(spdlog::level::trace);
syslog_sink->set_level(level);

logger->sinks().push_back(syslog_sink);
}
5 changes: 3 additions & 2 deletions Senna/Backend/SennaContext/SennaContext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ SennaContext::SennaContext() {
p_default_logger = spdlog::stdout_color_mt(default_logger_name);
p_default_logger->set_pattern("[%D %T] [%=10n] %^[process id : %P] [thread id : %t] [%8l] %v%$");
p_default_logger->set_level(spdlog::level::trace);
p_default_logger->info("spdlog version {}.{}.{} !", SPDLOG_VER_MAJOR, SPDLOG_VER_MINOR, SPDLOG_VER_PATCH);
p_default_logger->info("fmt version {} !", FMT_VERSION);
p_default_logger->debug("Senna Start Succeed!");
p_default_logger->debug("spdlog version {}.{}.{} !", SPDLOG_VER_MAJOR, SPDLOG_VER_MINOR, SPDLOG_VER_PATCH);
p_default_logger->debug("fmt version {} !", FMT_VERSION);
spdlog::set_default_logger(p_default_logger);
}
8 changes: 4 additions & 4 deletions Senna/Backend/SennaContext/SennaContext.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class SennaContext {
* @param name logger name
* @param pattern logger pattern
*/
void createLogger(const char *name, const char *pattern);
void createLogger(const char *name, spdlog::level::level_enum level, const char *pattern);

/**
* 销毁一个 Logger
Expand All @@ -41,7 +41,7 @@ class SennaContext {
* @param facility facility
* @param format format
*/
void enableSysLog(const char *name, const char *pattern, const char *ident, int option, int facility, bool format);
void enableSysLog(const char *name, spdlog::level::level_enum level, const char *pattern, const char *ident, int option, int facility, bool format);

/**
* Enable Logger's RotatingFileLog
Expand All @@ -51,7 +51,7 @@ class SennaContext {
* @param max_size max_size
* @param max_files max_files
*/
void enableRotatingFileLog(const char *name, const char *pattern, const char *file_path, size_t max_size, size_t max_files);
void enableRotatingFileLog(const char *name, spdlog::level::level_enum level, const char *pattern, const char *file_path, size_t max_size, size_t max_files);

/**
* Enable Logger's DailyLog
Expand All @@ -61,7 +61,7 @@ class SennaContext {
* @param hour flush time hour
* @param minute flush time minute
*/
void enableDailyFileLog(const char *name, const char *pattern, const char *file_path, int hour, int minute);
void enableDailyFileLog(const char *name, spdlog::level::level_enum level, const char *pattern, const char *file_path, int hour, int minute);

private:
std::shared_ptr<spdlog::logger> p_default_logger;
Expand Down
8 changes: 4 additions & 4 deletions Senna/Bridge/Bridge.Core.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,16 @@
import Foundation

@_silgen_name("senna_add_logger")
func senna_add_logger(_ name: UnsafePointer<Int8>?, _ pattern: UnsafePointer<Int8>?)
func senna_add_logger(_ name: UnsafePointer<Int8>?, _ flag: UInt32, _ pattern: UnsafePointer<Int8>?)

@_silgen_name("senna_drop_logger")
func senna_drop_logger(_ name: UnsafePointer<Int8>?)

@_silgen_name("senna_logger_enable_syslog")
func senna_logger_enable_syslog(_ name: UnsafePointer<Int8>?, _ pattern: UnsafePointer<Int8>?, _ ident: UnsafePointer<Int8>?, _ option: CInt, _ facility: CInt, _ format: Bool)
func senna_logger_enable_syslog(_ name: UnsafePointer<Int8>?, _ flag: UInt32, _ pattern: UnsafePointer<Int8>?, _ ident: UnsafePointer<Int8>?, _ option: CInt, _ facility: CInt, _ format: Bool)

@_silgen_name("senna_logger_enable_rotating_file")
func senna_logger_enable_rotating_file(_ name: UnsafePointer<Int8>?, _ pattern: UnsafePointer<Int8>?, _ file_path: UnsafePointer<Int8>?, _ max_size: Int, _ max_files: Int)
func senna_logger_enable_rotating_file(_ name: UnsafePointer<Int8>?, _ flag: UInt32, _ pattern: UnsafePointer<Int8>?, _ file_path: UnsafePointer<Int8>?, _ max_size: Int, _ max_files: Int)

@_silgen_name("senna_logger_enable_daily_file")
func senna_logger_enable_daily_file(_ name: UnsafePointer<Int8>?, _ pattern: UnsafePointer<Int8>?, _ file_path: UnsafePointer<Int8>?, _ hour: CInt, _ minute: CInt)
func senna_logger_enable_daily_file(_ name: UnsafePointer<Int8>?, _ flag: UInt32, _ pattern: UnsafePointer<Int8>?, _ file_path: UnsafePointer<Int8>?, _ hour: CInt, _ minute: CInt)
19 changes: 10 additions & 9 deletions Senna/Frontend/Logger.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import Darwin.POSIX.syslog
public protocol Logger {
var name: String { get }
var pattern: String { get }
var flag: LogFlag { get }
}

// MARK: - Life Cycle
Expand All @@ -24,42 +25,42 @@ extension Logger {

// MARK: - Default Values
extension Logger {
public var pattern: String {
DefaultPattern
}
public var pattern: String { DefaultPattern }

public var flag: LogFlag { .trace }
}

// MARK: - Features
extension Logger {

@discardableResult
public func enableSysLog(pattern: String = DefaultPattern, ident: String? = nil, option: Int32 = 0, facility: Int32 = LOG_USER, format: Bool = false) -> Self {
public func enableSysLog(flag: LogFlag = .trace, pattern: String = DefaultPattern, ident: String? = nil, option: Int32 = 0, facility: Int32 = LOG_USER, format: Bool = false) -> Self {
let ident = ident ?? self.name
let loggerName = self.name.cString(using: .utf8)
let pattern = pattern.cString(using: .utf8)

senna_logger_enable_syslog(loggerName, pattern, ident, option, facility, format)
senna_logger_enable_syslog(loggerName, flag.rawValue, pattern, ident, option, facility, format)

return self
}

@discardableResult
public func enableRotatingFileLog(pattern: String = DefaultPattern, filePath: String, maxSize: Int = 1024 * 1024, maxFiles: Int = 1000) -> Self {
public func enableRotatingFileLog(flag: LogFlag = .trace, pattern: String = DefaultPattern, filePath: String, maxSize: Int = 1024 * 1024, maxFiles: Int = 1000) -> Self {
let loggerName = self.name.cString(using: .utf8)
let filePath = filePath.cString(using: .utf8)
let pattern = pattern.cString(using: .utf8)

senna_logger_enable_rotating_file(loggerName, pattern, filePath, maxSize, maxFiles)
senna_logger_enable_rotating_file(loggerName, flag.rawValue, pattern, filePath, maxSize, maxFiles)
return self
}

@discardableResult
public func enableDailyFileLog(pattern: String = DefaultPattern, filePath: String, hour: Int = 00, minute: Int = 00) -> Self {
public func enableDailyFileLog(flag: LogFlag = .trace, pattern: String = DefaultPattern, filePath: String, hour: Int = 00, minute: Int = 00) -> Self {
let loggerName = self.name.cString(using: .utf8)
let filePath = filePath.cString(using: .utf8)
let pattern = pattern.cString(using: .utf8)

senna_logger_enable_daily_file(loggerName, pattern, filePath, CInt(hour), CInt(minute))
senna_logger_enable_daily_file(loggerName, flag.rawValue, pattern, filePath, CInt(hour), CInt(minute))
return self
}
}
Expand Down
2 changes: 1 addition & 1 deletion Senna/Frontend/Senna.swift
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public func drop(loggers: [Logger]) {
public func register(logger: Logger) {
let loggerName = logger.name.cString(using: .utf8)
let pattern = logger.pattern.cString(using: .utf8)
senna_add_logger(loggerName, pattern)
senna_add_logger(loggerName, logger.flag.rawValue, pattern)
}

public func drop(logger: Logger) {
Expand Down

0 comments on commit 565add1

Please sign in to comment.