|
@@ -8,7 +8,7 @@
|
|
|
* @brief Log class for VTM device vendor for developing device adapter
|
|
|
* @details
|
|
|
* 2020-4-28: strip log component from SpAgent Project and adjust it.
|
|
|
- *
|
|
|
+ * 2020-11-11: add log_init_config_c structure and new init api: log4vendor::initp
|
|
|
**************************************/
|
|
|
|
|
|
#ifndef _VTM_LOG4VENDOR_H_
|
|
@@ -18,6 +18,7 @@
|
|
|
|
|
|
#include <sstream>
|
|
|
#include <string>
|
|
|
+#include <cstring>
|
|
|
|
|
|
#ifdef _WIN32
|
|
|
#ifdef LIBLOG4VENDOR_EXPORTS
|
|
@@ -134,22 +135,40 @@ typedef char CHAR;
|
|
|
#define TRACE4VTM_FUNCTION(pValue) cmb::log4vendor_tracer _FunctionTraceLogger(\
|
|
|
__FUNCTION__, cmb::log4vendor_tracer::_get_file_name(__FILE__), __LINE__, (pValue))
|
|
|
|
|
|
+#define VENDOR_BUFF_SIZE 256
|
|
|
|
|
|
namespace cmb {
|
|
|
|
|
|
+ struct log_init_config_c
|
|
|
+ {
|
|
|
+ short log_type; /*见上面 CMB_LOG_TYPE_FILE 等定义*/
|
|
|
+ short log_level; /*见上面 CMB_LOG_TRACE 等定义*/
|
|
|
+ char dev_name[VENDOR_BUFF_SIZE]; /*硬件名称,用于作为子目录的区分*/
|
|
|
+ char log_dir[VENDOR_BUFF_SIZE]; /*在 log_type 包含 CMB_LOG_TYPE_FILE 时,该参数才有效,用于记录日志的目录*/
|
|
|
+ };
|
|
|
+
|
|
|
struct LOG4VENDOR_API log_init_config
|
|
|
{
|
|
|
short log_type; /*见上面 CMB_LOG_TYPE_FILE 等定义*/
|
|
|
short log_level; /*见上面 CMB_LOG_TRACE 等定义*/
|
|
|
- vtm_string dev_name; /*硬件名称,用于作为子目录的区分*/
|
|
|
- vtm_string log_dir; /*在 log_type 包含 CMB_LOG_TYPE_FILE 时,该参数才有效,用于记录日志的目录*/
|
|
|
+ std::string dev_name; /*硬件名称,用于作为子目录的区分*/
|
|
|
+ std::string log_dir; /*在 log_type 包含 CMB_LOG_TYPE_FILE 时,该参数才有效,用于记录日志的目录*/
|
|
|
|
|
|
log_init_config()
|
|
|
:log_type(CMB_LOG_TYPE_FILE)
|
|
|
,log_level(CMB_LOG_TRACE)
|
|
|
,dev_name(LOG4VTM_TEXT("VTM")),log_dir(LOG4VTM_TEXT("")){}
|
|
|
+
|
|
|
+ log_init_config(const log_init_config& rhs)
|
|
|
+ :log_type(rhs.log_type)
|
|
|
+ , log_level(rhs.log_level)
|
|
|
+ , dev_name(rhs.dev_name), log_dir(rhs.log_dir)
|
|
|
+ {
|
|
|
+ }
|
|
|
};
|
|
|
|
|
|
+
|
|
|
+
|
|
|
class LOG4VENDOR_API log4vendor
|
|
|
{
|
|
|
public:
|
|
@@ -169,6 +188,8 @@ namespace cmb {
|
|
|
*/
|
|
|
static void init(const log_init_config& config, vtm_string& ret_msg);
|
|
|
|
|
|
+ static void initp(const log_init_config_c* pconfig, char pret_msg[VENDOR_BUFF_SIZE]);
|
|
|
+
|
|
|
virtual void log(int log_level, const vtm_string& text) = 0;
|
|
|
|
|
|
static std::basic_ostringstream<char>& get_oss();
|