File size: 3,504 Bytes
139f25e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/**************************************************************************************************
 *
 * Copyright (c) 2019-2024 Axera Semiconductor Co., Ltd. All Rights Reserved.
 *
 * This source file is the property of Axera Semiconductor Co., Ltd. and
 * may not be copied or distributed in any isomorphic form without the prior
 * written consent of Axera Semiconductor Co., Ltd.
 *
 **************************************************************************************************/

#ifndef _AX_SYS_LOG_H_
#define _AX_SYS_LOG_H_
#include "ax_base_type.h"
#include "ax_global_type.h"
#include <stdio.h>

#ifdef __cplusplus
extern "C"
{
#endif

/*
    LOG_EMERG     system is unusable
    LOG_ALERT     action must be taken immediately
    LOG_CRIT      critical conditions
    LOG_ERR       error conditions
    LOG_WARNING   warning conditions
    LOG_NOTICE    normal, but significant, condition
    LOG_INFO      informational message
    LOG_DEBUG     debug-level message
*/

AX_VOID AX_SYS_LogOpen();
AX_VOID AX_SYS_LogClose();
AX_VOID AX_SYS_LogPrint(AX_S32 level, AX_CHAR const *pFormat, ...);
AX_VOID AX_SYS_LogOutput(AX_LOG_TARGET_E target, AX_LOG_LEVEL_E level, AX_CHAR const *format, va_list vlist);
AX_VOID AX_SYS_LogPrint_Ex(AX_S32 level, AX_CHAR const *tag, int id, AX_CHAR const *pFormat, ...);
AX_VOID AX_SYS_LogOutput_Ex(AX_LOG_TARGET_E target, AX_LOG_LEVEL_E level, AX_CHAR const *tag, int id, AX_CHAR const *format, va_list vlist);

#ifdef __cplusplus
}
#endif

#define MACRO_BLACK         "\033[1;30;30m"
#define MACRO_RED           "\033[1;30;31m"
#define MACRO_GREEN         "\033[1;30;32m"
#define MACRO_YELLOW        "\033[1;30;33m"
#define MACRO_BLUE          "\033[1;30;34m"
#define MACRO_PURPLE        "\033[1;30;35m"
#define MACRO_WHITE         "\033[1;30;37m"
#define MACRO_END           "\033[0m"

#define AX_MSYS_LOG_TAG  "MSYS"

#define AX_LOG_ERR(fmt,...) \
    AX_SYS_LogPrint(SYS_LOG_ERROR,  MACRO_RED"[E][%32s][%4d]: "fmt MACRO_END, __FUNCTION__, __LINE__, ##__VA_ARGS__);
#define AX_LOG_WARN(fmt,...) \
    AX_SYS_LogPrint(SYS_LOG_WARN, MACRO_BLUE"[W][%32s][%4d]: "fmt MACRO_END, __FUNCTION__, __LINE__, ##__VA_ARGS__);
#define AX_LOG_INFO(fmt,...) \
    AX_SYS_LogPrint(SYS_LOG_INFO, MACRO_GREEN"[I][%32s][%4d]: "fmt MACRO_END, __FUNCTION__, __LINE__, ##__VA_ARGS__);
#define AX_LOG_DBG(fmt,...) \
    AX_SYS_LogPrint(SYS_LOG_DEBUG, MACRO_WHITE"[D][%32s][%4d]: "fmt MACRO_END, __FUNCTION__, __LINE__, ##__VA_ARGS__);
#define AX_LOG_NOTICE(fmt,...) \
    AX_SYS_LogPrint(SYS_LOG_NOTICE, MACRO_PURPLE"[N][%32s][%4d]: "fmt MACRO_END, __FUNCTION__, __LINE__, ##__VA_ARGS__);

#define AX_LOG_ERR_EX(tag,id,fmt,...) \
    AX_SYS_LogPrint_Ex(SYS_LOG_ERROR, tag, id, MACRO_RED"[E][%32s][%4d]: "fmt MACRO_END , __FUNCTION__, __LINE__, ##__VA_ARGS__);
#define AX_LOG_WARN_EX(tag,id,fmt,...) \
    AX_SYS_LogPrint_Ex(SYS_LOG_WARN, tag, id, MACRO_BLUE"[W][%32s][%4d]: "fmt MACRO_END , __FUNCTION__, __LINE__, ##__VA_ARGS__);
#define AX_LOG_INFO_EX(tag,id,fmt,...) \
    AX_SYS_LogPrint_Ex(SYS_LOG_INFO, tag, id, MACRO_GREEN"[I][%32s][%4d]: "fmt MACRO_END , __FUNCTION__, __LINE__, ##__VA_ARGS__);
#define AX_LOG_DBG_EX(tag,id,fmt,...) \
    AX_SYS_LogPrint_Ex(SYS_LOG_DEBUG, tag, id, MACRO_WHITE"[D][%32s][%4d]: "fmt MACRO_END , __FUNCTION__, __LINE__, ##__VA_ARGS__);
#define AX_LOG_NOTICE_EX(tag,id,fmt,...) \
    AX_SYS_LogPrint_Ex(SYS_LOG_NOTICE, tag, id, MACRO_PURPLE"[N][%32s][%4d]: "fmt MACRO_END , __FUNCTION__, __LINE__, ##__VA_ARGS__);

#endif //_AX_SYS_LOG_H_