mirror of
https://gitee.com/jiuyilian/embedded-framework.git
synced 2025-01-06 10:16:51 -05:00
Add new log module.
This commit is contained in:
parent
3daf05fa02
commit
a80dbac00e
|
@ -14,7 +14,7 @@ set(EXTERNAL_SOURCE_PATH "${CMAKE_SOURCE_DIR_IPCSDK}/external")
|
||||||
|
|
||||||
set(CLANG_TIDY_CHECKS "-*,\
|
set(CLANG_TIDY_CHECKS "-*,\
|
||||||
llvm-else-after-return,\
|
llvm-else-after-return,\
|
||||||
llvm-include-order,\
|
-llvm-include-order,\
|
||||||
llvm-namespace-comment,\
|
llvm-namespace-comment,\
|
||||||
llvm-prefer-isa-or-dyn-cast-in-conditionals,\
|
llvm-prefer-isa-or-dyn-cast-in-conditionals,\
|
||||||
llvm-prefer-register-over-unsigned,\
|
llvm-prefer-register-over-unsigned,\
|
||||||
|
|
|
@ -2,9 +2,6 @@
|
||||||
#define HAL_H
|
#define HAL_H
|
||||||
#include "StatusCode.h"
|
#include "StatusCode.h"
|
||||||
#include "IHal.h"
|
#include "IHal.h"
|
||||||
/*
|
|
||||||
** Make sure we can call this stuff from C++.
|
|
||||||
*/
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
|
|
|
@ -8,7 +8,7 @@ static void ILogInitCallBack(ILog *object, const enum LogInstance log)
|
||||||
static void ILogFree(ILog *object)
|
static void ILogFree(ILog *object)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
static int ILogPrintf(ILog *object, const char *function, const int line, const int type, const char *format, ...)
|
static int ILogPrintf(ILog *object, const char *function, const int line, const enum LogType type, const char *format, ...)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,7 @@ extern "C"
|
||||||
{
|
{
|
||||||
void (*init)(ILog *, const enum LogInstance);
|
void (*init)(ILog *, const enum LogInstance);
|
||||||
void (*free)(ILog *);
|
void (*free)(ILog *);
|
||||||
int (*printf)(ILog *, const char *, const int, const int, const char *, ...);
|
int (*printf)(ILog *, const char *, const int, const enum LogType, const char *, ...);
|
||||||
void (*un_init)(ILog *);
|
void (*un_init)(ILog *);
|
||||||
} ILog;
|
} ILog;
|
||||||
ILog *GetLogIntance(void);
|
ILog *GetLogIntance(void);
|
||||||
|
@ -51,6 +51,10 @@ extern "C"
|
||||||
{
|
{
|
||||||
return GetLogIntance()->un_init(GetLogIntance());
|
return GetLogIntance()->un_init(GetLogIntance());
|
||||||
}
|
}
|
||||||
|
static inline void ILogFree(void)
|
||||||
|
{
|
||||||
|
GetLogIntance()->free(GetLogIntance());
|
||||||
|
}
|
||||||
void CreateLogModule(void);
|
void CreateLogModule(void);
|
||||||
void DestroyLogModule(void);
|
void DestroyLogModule(void);
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
@ -8,7 +8,13 @@ public:
|
||||||
ILogCpp() = default;
|
ILogCpp() = default;
|
||||||
virtual ~ILogCpp() = default;
|
virtual ~ILogCpp() = default;
|
||||||
static std::shared_ptr<ILogCpp> &GetInstance(std::shared_ptr<ILogCpp> *impl = nullptr);
|
static std::shared_ptr<ILogCpp> &GetInstance(std::shared_ptr<ILogCpp> *impl = nullptr);
|
||||||
virtual void Init(const int &log) {}
|
virtual void Init(const enum LogInstance &log) {}
|
||||||
virtual void UnInit(void) {}
|
virtual void UnInit(void) {}
|
||||||
|
virtual int Log(const char *buff) { return 0; }
|
||||||
|
virtual int InFo(const char *buff) { return 0; }
|
||||||
|
virtual int Warning(const char *buff) { return 0; }
|
||||||
|
virtual int Error(const char *buff) { return 0; }
|
||||||
|
virtual int Trace(const char *buff) { return 0; }
|
||||||
|
virtual int Debug(const char *buff) { return 0; }
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
|
@ -3,12 +3,19 @@
|
||||||
#include "ILogCpp.h"
|
#include "ILogCpp.h"
|
||||||
#include "LogEasylogging.h"
|
#include "LogEasylogging.h"
|
||||||
#include "LogImpl.h"
|
#include "LogImpl.h"
|
||||||
|
#include "Log.h"
|
||||||
#include <memory>
|
#include <memory>
|
||||||
void CreateLogModule(void)
|
void CreateLogModule(void)
|
||||||
{
|
{
|
||||||
|
std::shared_ptr<ILogCpp> logImpl = ILogMakePtr::GetInstance()->MakeLogEasylogging(nullptr);
|
||||||
|
ILogCpp::GetInstance(&logImpl);
|
||||||
|
ILog *log = nullptr;
|
||||||
|
ILogMakePtr::GetInstance()->CreateLogPtr(&log);
|
||||||
|
ResetLogImpl((ILog *)log);
|
||||||
}
|
}
|
||||||
void DestroyLogModule(void)
|
void DestroyLogModule(void)
|
||||||
{
|
{
|
||||||
|
ILogFree();
|
||||||
}
|
}
|
||||||
std::shared_ptr<ILogCpp> ILogMakePtr::MakeLogImplPtr(void)
|
std::shared_ptr<ILogCpp> ILogMakePtr::MakeLogImplPtr(void)
|
||||||
{
|
{
|
||||||
|
@ -20,3 +27,7 @@ std::shared_ptr<ILogCpp> ILogMakePtr::MakeLogEasylogging(const LogSetting *setti
|
||||||
std::shared_ptr<ILogCpp> logImpl = std::make_shared<LogEasylogging>(setting);
|
std::shared_ptr<ILogCpp> logImpl = std::make_shared<LogEasylogging>(setting);
|
||||||
return logImpl;
|
return logImpl;
|
||||||
}
|
}
|
||||||
|
void ILogMakePtr::CreateLogPtr(ILog **log)
|
||||||
|
{
|
||||||
|
NewLog((Log **)log);
|
||||||
|
}
|
|
@ -1,6 +1,7 @@
|
||||||
#ifndef ILOG_MAKE_PTR_H
|
#ifndef ILOG_MAKE_PTR_H
|
||||||
#define ILOG_MAKE_PTR_H
|
#define ILOG_MAKE_PTR_H
|
||||||
#include "ILogCpp.h"
|
#include "ILogCpp.h"
|
||||||
|
#include "ILog.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
class ILogMakePtr
|
class ILogMakePtr
|
||||||
|
@ -19,5 +20,6 @@ public:
|
||||||
virtual ~ILogMakePtr() = default;
|
virtual ~ILogMakePtr() = default;
|
||||||
virtual std::shared_ptr<ILogCpp> MakeLogImplPtr(void);
|
virtual std::shared_ptr<ILogCpp> MakeLogImplPtr(void);
|
||||||
virtual std::shared_ptr<ILogCpp> MakeLogEasylogging(const LogSetting *setting);
|
virtual std::shared_ptr<ILogCpp> MakeLogEasylogging(const LogSetting *setting);
|
||||||
|
virtual void CreateLogPtr(ILog **log);
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
87
utils/Log/src/Log.cpp
Normal file
87
utils/Log/src/Log.cpp
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
#include "Log.h"
|
||||||
|
#include "ILogCpp.h"
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <iostream>
|
||||||
|
#include <memory>
|
||||||
|
#include <string.h>
|
||||||
|
static void LogFree(ILog *object)
|
||||||
|
{
|
||||||
|
printf("log instance free.\n");
|
||||||
|
if (object)
|
||||||
|
{
|
||||||
|
free(object);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
static int LogPrintf(ILog *object, const char *function, const int line, const enum LogType type, const char *format, ...)
|
||||||
|
{
|
||||||
|
// TODO:
|
||||||
|
// LogTypeToString(type);
|
||||||
|
constexpr int SEND_TRACE_BUFF_SIZE = 2048;
|
||||||
|
char buff[SEND_TRACE_BUFF_SIZE] = {0};
|
||||||
|
snprintf(buff, SEND_TRACE_BUFF_SIZE, "[%s][line:%d]:", function, line);
|
||||||
|
// ILog::GetInstance()->Log(buff);
|
||||||
|
const int headLen = strlen(buff);
|
||||||
|
va_list vargs;
|
||||||
|
va_start(vargs, format);
|
||||||
|
int len = vsnprintf(buff + headLen, SEND_TRACE_BUFF_SIZE - headLen, format, vargs);
|
||||||
|
va_end(vargs);
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case LOG_TYPE_INFORMATION:
|
||||||
|
ILogCpp::GetInstance()->InFo(buff);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LOG_TYPE_WARNING:
|
||||||
|
ILogCpp::GetInstance()->Warning(buff);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LOG_TYPE_ERROR:
|
||||||
|
ILogCpp::GetInstance()->Error(buff);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LOG_TYPE_DEBUG:
|
||||||
|
ILogCpp::GetInstance()->Debug(buff);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LOG_TYPE_TRACE:
|
||||||
|
ILogCpp::GetInstance()->Trace(buff);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
static void LogImplInit(Log *log)
|
||||||
|
{
|
||||||
|
printf("LogImplInit\n");
|
||||||
|
((ILog *)log)->printf = LogPrintf;
|
||||||
|
((ILog *)log)->free = LogFree;
|
||||||
|
}
|
||||||
|
void NewLog(Log **log)
|
||||||
|
{
|
||||||
|
if (!log)
|
||||||
|
{
|
||||||
|
printf("STATUS_CODE_INVALID_PARAMENTER\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!(*log))
|
||||||
|
{
|
||||||
|
*log = (Log *)malloc(sizeof(Log));
|
||||||
|
if (*log)
|
||||||
|
{
|
||||||
|
printf("NewLog succeed.\n");
|
||||||
|
NewILog((ILog **)log);
|
||||||
|
LogImplInit(*log);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
LogError("NewLog failed.\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// else
|
||||||
|
{
|
||||||
|
LogImplInit(*log);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
17
utils/Log/src/Log.h
Normal file
17
utils/Log/src/Log.h
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
#ifndef LOG_H
|
||||||
|
# define LOG_H
|
||||||
|
#include "ILog.h"
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
#endif
|
||||||
|
typedef struct log Log;
|
||||||
|
typedef struct log
|
||||||
|
{
|
||||||
|
ILog base;
|
||||||
|
} Log;
|
||||||
|
void NewLog(Log **log);
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
|
@ -21,7 +21,7 @@ LogEasylogging::LogEasylogging(const LogSetting *setting)
|
||||||
mMaxSize = setting->maxSize;
|
mMaxSize = setting->maxSize;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void LogEasylogging::Init(const int &log)
|
void LogEasylogging::Init(const enum LogInstance &log)
|
||||||
{
|
{
|
||||||
#if 0
|
#if 0
|
||||||
el::Configurations conf("/home/xiaojiazhu/project/OS/OSThings/test/out/bin/default-logger.conf");
|
el::Configurations conf("/home/xiaojiazhu/project/OS/OSThings/test/out/bin/default-logger.conf");
|
||||||
|
@ -51,38 +51,38 @@ void LogEasylogging::UnInit(void)
|
||||||
// {
|
// {
|
||||||
// return true;
|
// return true;
|
||||||
// }
|
// }
|
||||||
// int LogEasylogging::Log(const char *buff)
|
int LogEasylogging::Log(const char *buff)
|
||||||
// {
|
{
|
||||||
// // LOG(INFO) << buff;
|
// LOG(INFO) << buff;
|
||||||
// return 0;
|
return 0;
|
||||||
// }
|
}
|
||||||
|
|
||||||
// int LogEasylogging::InFo(const char *buff)
|
int LogEasylogging::InFo(const char *buff)
|
||||||
// {
|
{
|
||||||
// LOG(INFO) << buff;
|
LOG(INFO) << buff;
|
||||||
// return 0;
|
return 0;
|
||||||
// }
|
}
|
||||||
|
|
||||||
// int LogEasylogging::Warning(const char *buff)
|
int LogEasylogging::Warning(const char *buff)
|
||||||
// {
|
{
|
||||||
// LOG(WARNING) << buff;
|
LOG(WARNING) << buff;
|
||||||
// return 0;
|
return 0;
|
||||||
// }
|
}
|
||||||
|
|
||||||
// int LogEasylogging::Error(const char *buff)
|
int LogEasylogging::Error(const char *buff)
|
||||||
// {
|
{
|
||||||
// LOG(ERROR) << buff;
|
LOG(ERROR) << buff;
|
||||||
// return 0;
|
return 0;
|
||||||
// }
|
}
|
||||||
|
|
||||||
// int LogEasylogging::Debug(const char *buff)
|
int LogEasylogging::Debug(const char *buff)
|
||||||
// {
|
{
|
||||||
// LOG(DEBUG) << buff;
|
LOG(DEBUG) << buff;
|
||||||
// return 0;
|
return 0;
|
||||||
// }
|
}
|
||||||
|
|
||||||
// int LogEasylogging::Trace(const char *buff)
|
int LogEasylogging::Trace(const char *buff)
|
||||||
// {
|
{
|
||||||
// LOG(TRACE) << buff;
|
LOG(TRACE) << buff;
|
||||||
// return 0;
|
return 0;
|
||||||
// }
|
}
|
|
@ -6,15 +6,15 @@ class LogEasylogging : public ILogCpp
|
||||||
public:
|
public:
|
||||||
LogEasylogging(const LogSetting *setting);
|
LogEasylogging(const LogSetting *setting);
|
||||||
virtual ~LogEasylogging() = default;
|
virtual ~LogEasylogging() = default;
|
||||||
void Init(const int &log) override;
|
void Init(const enum LogInstance &log) override;
|
||||||
void UnInit(void) override;
|
void UnInit(void) override;
|
||||||
// bool IsWorking(); // override;
|
// bool IsWorking(); // override;
|
||||||
// int Log(const char *buff); // override;
|
int Log(const char *buff); // override;
|
||||||
// int InFo(const char *buff); // override;
|
int InFo(const char *buff); // override;
|
||||||
// int Warning(const char *buff); // override;
|
int Warning(const char *buff); // override;
|
||||||
// int Error(const char *buff); // override;
|
int Error(const char *buff); // override;
|
||||||
// int Trace(const char *buff); // override;
|
int Trace(const char *buff); // override;
|
||||||
// int Debug(const char *buff); // override;
|
int Debug(const char *buff); // override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::string mFileName; // File name of saving log.
|
std::string mFileName; // File name of saving log.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user