补充信息
1)drv提供的日志注册接口 int32_t drv_log_set_module_log_level(int32_t level, int32_t *module_ids, int32_t size);
2)解注册流程也需要补充一下,drv的解注册函数在plog里面有实现,urma的解注册接口是urma_unregister_log_func
另外需要考虑一下设置日志级别为null(4)的情况


这里有一份示例代码,仅供参考
e5d791d2b6a4493f8828d1bac2bb3dca.zip


有一个死锁问题
Thread 19 (LWP 4589):
#0 0x000003fffec7d704 in ?? () from /usr/lib64/libc.so.6
#1 0x000003fffec83418 in pthread_mutex_lock () from /usr/lib64/libc.so.6
#2 0x000003ffff4beb38 in ToolMutexLock (mutex=0x3ffff4d4a40 <g_slogMutex>) at ../../../../../../../../../../../runtime/src/dfx/log/utils/log_system_api.c:55
#3 0x000003ffff4b70ec in SlogLock () at ../../../../../../../../../../../runtime/src/dfx/log/liblog/slog/dlog_core.c:52
#4 0x000003ffff4b869c in DlogWriteInner (msgArg=0x3ffed7ae568, fmt=0x3ffffec1180 "%s:%d trace server send thread start.\n", v=...) at ../../../../../../../../../../../runtime/src/dfx/log/liblog/slog/dlog_core.c:475
#5 0x000003ffff4b592c in DlogRecord (moduleId=16777287, level=1, fmt=0x3ffffec1180 "%s:%d trace server send thread start.\n") at ../../../../../../../../../../../runtime/src/dfx/log/liblog/slog/slog_api.cpp:394
#6 0x000003ffffeac218 in TraceServerSendThread (arg=0x0) at ../../../../../../../../../../runtime/src/dfx/trace/atrace/trace_server/send_mgr/trace_send_mgr.c:84
#7 0x000003fffec8056c in ?? () from /usr/lib64/libc.so.6
#8 0x000003fffece89cc in ?? () from /usr/lib64/libc.so.6
Thread 18 (LWP 4588):
#0 0x000003fffec7d704 in ?? () from /usr/lib64/libc.so.6
#1 0x000003fffec83418 in pthread_mutex_lock () from /usr/lib64/libc.so.6
#2 0x000003ffff4beb38 in ToolMutexLock (mutex=0x3ffff4d4a40 <g_slogMutex>) at ../../../../../../../../../../../runtime/src/dfx/log/utils/log_system_api.c:55
#3 0x000003ffff4b70ec in SlogLock () at ../../../../../../../../../../../runtime/src/dfx/log/liblog/slog/dlog_core.c:52
#4 0x000003ffff4b869c in DlogWriteInner (msgArg=0x3fffc21d488, fmt=0x3ffffec4fb1 "[%s:%d][tid:%d] Run Server(%d) Process\n", v=...) at ../../../../../../../../../../../runtime/src/dfx/log/liblog/slog/dlog_core.c:475
#5 0x000003ffff4b592c in DlogRecord (moduleId=16777217, level=1, fmt=0x3ffffec4fb1 "[%s:%d][tid:%d] Run Server(%d) Process\n") at ../../../../../../../../../../../runtime/src/dfx/log/liblog/slog/slog_api.cpp:394
#6 0x000003ffffebbee4 in Adx::AdxServerManager::ComponentWaitEvent() () from /usr/lib64/libutrace_server.so
#7 0x000003ffffebc178 in Adx::AdxServerManager::Run() () from /usr/lib64/libutrace_server.so
#8 0x000003ffffebf018 in Adx::Runnable::Process(void*) () from /usr/lib64/libutrace_server.so
#9 0x000003fffec8056c in ?? () from /usr/lib64/libc.so.6
#10 0x000003fffece89cc in ?? () from /usr/lib64/libc.so.6
Thread 17 (LWP 4587):
#0 0x000003fffec7d474 in ?? () from /usr/lib64/libc.so.6
#1 0x000003fffec81d38 in ?? () from /usr/lib64/libc.so.6
#2 0x000003ffff489f44 in mmJoinTask () from /usr/lib64/libmmpa.so
#3 0x000003ffffebf254 in Adx::Runnable::Join() () from /usr/lib64/libutrace_server.so
#4 0x000003ffffeb7104 in Adx::ServerRegister::ServerManagerInit(ServerInitInfo) () from /usr/lib64/libutrace_server.so
#5 0x000003ffffeb7198 in Adx::ServerRegister::ComponentServerStartup(ServerInitInfo) const () from /usr/lib64/libutrace_server.so
#6 0x000003ffffeb71d8 in Adx::AdxServerProcess(void*) () from /usr/lib64/libutrace_server.so
#7 0x000003fffec8056c in ?? () from /usr/lib64/libc.so.6
#8 0x000003fffece89cc in ?? () from /usr/lib64/libc.so.6
Thread 16 (LWP 4586):
#0 0x000003fffece8ce4 in epoll_pwait () from /usr/lib64/libc.so.6
#1 0x0000aaaac8c64ff4 in bbox_ioctl_epoll_wait (ep=23, events=0x3ffedfbdb18, max_events=128, timeout=500) at ../../../../../../../../../../../abl/ascend_hal/user_space/src/bbox/bbox_excep_mgr/message_mgr/bbox_ioctl.c:536
#2 0x0000aaaac8c5c060 in bbox_rmt_ops_epoll_wait (ep=23, events=0x3ffedfbdb18, max_events=128, timeout=500) at ../../../../../../../../../../../abl/ascend_hal/user_space/src/bbox/bbox_excep_mgr/message_mgr/bbox_protol.c:147
#3 0x0000aaaac8c50c0c in bbox_remote_msg_handle (args=0x0) at ../../../../../../../../../../../abl/ascend_hal/user_space/src/bbox/bbox_excep_mgr/message_mgr/bbox_remote.c:1151
#4 0x000003fffec8056c in ?? () from /usr/lib64/libc.so.6
#5 0x000003fffece89cc in ?? () from /usr/lib64/libc.so.6
Thread 15 (LWP 4585):
#0 0x000003fffec7d474 in ?? () from /usr/lib64/libc.so.6
#1 0x000003fffec7fd54 in pthread_cond_timedwait () from /usr/lib64/libc.so.6
#2 0x000003ffff48a65c in mmCondTimedWait () from /usr/lib64/libmmpa.so
#3 0x0000aaaac8c52d68 in bbox_thread_cond_timed_wait (cond=0xaaaac8cafd58 <g_dev_mgr+8>, m_sec=1000) at ../../../../../../../../../../../driver/driver/src/ascend_hal/bbox/bbox_excep_mgr/utils/bbox_system_api.c:251
#4 0x0000aaaac8c40894 in bbox_dev_cond_wait (wait_timeout=1000) at ../../../../../../../../../../../abl/ascend_hal/user_space/src/bbox/bbox_excep_mgr/device_mgr/bbox_device_mgr.c:264
#5 0x0000aaaac8c409c0 in bbox_dev_except_handle () at ../../../../../../../../../../../abl/ascend_hal/user_space/src/bbox/bbox_excep_mgr/device_mgr/bbox_device_mgr.c:289
--Type
#6 0x0000aaaac8c40b14 in bbox_dev_run_except_handle () at ../../../../../../../../../../../abl/ascend_hal/user_space/src/bbox/bbox_excep_mgr/device_mgr/bbox_device_mgr.c:323
#7 0x0000aaaac8c3fa48 in bbox_main_process_handle (args=0x0) at ../../../../../../../../../../../abl/ascend_hal/user_space/src/bbox/bbox_excep_mgr/bbox_main.c:157
#8 0x000003fffec8056c in ?? () from /usr/lib64/libc.so.6
#9 0x000003fffece89cc in ?? () from /usr/lib64/libc.so.6
Thread 14 (LWP 4584):
#0 0x000003fffec7d474 in ?? () from /usr/lib64/libc.so.6
#1 0x000003fffec7fd54 in pthread_cond_timedwait () from /usr/lib64/libc.so.6
#2 0x000003ffff15a188 in SendHeartBeatThreadFunction(unsigned int, unsigned int, int) () from /usr/lib64/libheartbeat.so
#3 0x000003ffff2a442c in ?? () from /usr/lib64/libstdc++.so.6
#4 0x000003fffec8056c in ?? () from /usr/lib64/libc.so.6
#5 0x000003fffece89cc in ?? () from /usr/lib64/libc.so.6
Thread 13 (LWP 4564):
#0 0x000003fffece8ce4 in epoll_pwait () from /usr/lib64/libc.so.6
#1 0x000003ffff1a1384 in DataMonitorImpl::Monitor(std::unique_ptr<epoll_event [], std::default_delete<epoll_event []> > const&, int) () from /usr/lib64/libeasy_comm.so.1
#2 0x000003ffff1a16a4 in DataMonitorImpl::RecvRoutine() () from /usr/lib64/libeasy_comm.so.1
#3 0x000003ffff2a442c in ?? () from /usr/lib64/libstdc++.so.6
#4 0x000003fffec8056c in ?? () from /usr/lib64/libc.so.6
#5 0x000003fffece89cc in ?? () from /usr/lib64/libc.so.6
Thread 12 (LWP 4563):
#0 0x000003fffece3ed0 in ioctl () from /usr/lib64/libc.so.6
#1 0x000003fffff7de90 in SysIoctl () from /usr/lib64/libiam.so.1
#2 0x000003fffff5feb4 in HiIam::AppIoctl(int, unsigned long, void*, unsigned int&, bool) () from /usr/lib64/libiam.so.1
#3 0x000003fffff600a4 in ioctl () from /usr/lib64/libiam.so.1
#4 0x000003ffff5ee524 in log_channel_ioctl () from /usr/lib64/libascend_hal.so
#5 0x000003ffff5ee5e0 in log_ioctl_get_data_by_type () from /usr/lib64/libascend_hal.so
#6 0x000003ffff5edfb0 in log_read_by_type () from /usr/lib64/libascend_hal.so
#7 0x0000aaaac8c218b4 in SlogdEventlogReceive (args=0xaaaac8ca44a8 <g_receiveMgr+2232>) at ../../../../../../../../../../../../runtime/src/dfx/log/syslog/slog/log_server/log_classify/event_log/slogd_eventlog.c:212
#8 0x0000aaaac8c1ba2c in SlogdComReceiveProc (args=0xaaaac8ca44a8 <g_receiveMgr+2232>) at ../../../../../../../../../../../../runtime/src/dfx/log/syslog/slog/log_server/log_pre_process/slogd_recv_core.c:105
#9 0x000003fffec8056c in ?? () from /usr/lib64/libc.so.6
#10 0x000003fffece89cc in ?? () from /usr/lib64/libc.so.6
Thread 11 (LWP 4562):
#0 0x000003fffece3ecc in ioctl () from /usr/lib64/libc.so.6
#1 0x000003fffff7de90 in SysIoctl () from /usr/lib64/libiam.so.1
#2 0x000003fffff5feb4 in HiIam::AppIoctl(int, unsigned long, void*, unsigned int&, bool) () from /usr/lib64/libiam.so.1
#3 0x000003fffff600a4 in ioctl () from /usr/lib64/libiam.so.1
#4 0x000003ffff5ee524 in log_channel_ioctl () from /usr/lib64/libascend_hal.so
#5 0x000003ffff5ee5e0 in log_ioctl_get_data_by_type () from /usr/lib64/libascend_hal.so
#6 0x000003ffff5edfb0 in log_read_by_type () from /usr/lib64/libascend_hal.so
#7 0x0000aaaac8c23208 in LogRecvSafeRead (deviceId=0, recvBuf=0x3fffc3ae6a8, maxLen=1048496) at ../../../../../../../../../../../../runtime/src/dfx/log/syslog/slog/log_server/log_classify/firmware_log/log_recv_interface.c:106
#8 0x0000aaaac8c223a0 in SlogdFirmwareLogReceive (args=0xaaaac8ca3c70 <g_receiveMgr+128>) at ../../../../../../../../../../../../runtime/src/dfx/log/syslog/slog/log_server/log_classify/firmware_log/log_recv.c:91
#9 0x0000aaaac8c1b838 in SlogdDevReceiveProc (args=0xaaaac8ca3c70 <g_receiveMgr+128>) at ../../../../../../../../../../../../runtime/src/dfx/log/syslog/slog/log_server/log_pre_process/slogd_recv_core.c:78
#10 0x000003fffec8056c in ?? () from /usr/lib64/libc.so.6
#11 0x000003fffece89cc in ?? () from /usr/lib64/libc.so.6
Thread 10 (LWP 4561):
#0 0x000003fffecb38d0 in clock_nanosleep () from /usr/lib64/libc.so.6
#1 0x000003fffecc479c in nanosleep () from /usr/lib64/libc.so.6
#2 0x000003fffece84a8 in usleep () from /usr/lib64/libc.so.6
#3 0x0000aaaac8c37aa0 in ToolSleep (milliSecond=1000) at ../../../../../../../../../../../../runtime/src/dfx/log/utils/log_system_api.c:714
#4 0x0000aaaac8c306dc in SlogdFlushDeviceProcess (args=0xaaaac8ca6cf8 <g_flushMgr+120>) at ../../../../../../../../../../../../runtime/src/dfx/log/syslog/slog/log_server/log_post_process/slogd_flush.c:212
#5 0x000003fffec8056c in ?? () from /usr/lib64/libc.so.6
#6 0x000003fffece89cc in ?? () from /usr/lib64/libc.so.6
Thread 9 (LWP 4560):
#0 0x000003fffecb38d0 in clock_nanosleep () from /usr/lib64/libc.so.6
#1 0x000003fffecc479c in nanosleep () from /usr/lib64/libc.so.6
#2 0x000003fffece84a8 in usleep () from /usr/lib64/libc.so.6
#3 0x0000aaaac8c37aa0 in ToolSleep (milliSecond=1000) at ../../../../../../../../../../../../runtime/src/dfx/log/utils/log_system_api.c:714
#4 0x0000aaaac8c304fc in SlogdFlushCommonProcess (args=0x0) at ../../../../../../../../../../../../runtime/src/dfx/log/syslog/slog/log_server/log_post_process/slogd_flush.c:183
#5 0x000003fffec8056c in ?? () from /usr/lib64/libc.so.6
#6 0x000003fffece89cc in ?? () from /usr/lib64/libc.so.6
Thread 8 (LWP 4559):
#0 0x000003fffecde908 in read () from /usr/lib64/libc.so.6
#1 0x000003fffff5f86c in HiIam::AppRead(int, void*, unsigned long, unsigned int&, bool) () from /usr/lib64/libiam.so.1
#2 0x000003fffff5fa5c in read () from /usr/lib64/libiam.so.1
#3 0x000003ffff4bcce4 in LevelNotifyWatcher (arg=0x0) at ../../../../../../../../../../../runtime/src/dfx/log/liblog/slog/dlog_level_shm.c:353
#4 0x000003fffec8056c in ?? () from /usr/lib64/libc.so.6
#5 0x000003fffece89cc in ?? () from /usr/lib64/libc.so.6
Thread 7 (LWP 4558):
#0 0x000003fffecde908 in read () from /usr/lib64/libc.so.6
#1 0x000003fffff5f86c in HiIam::AppRead(int, void*, unsigned long, unsigned int&, bool) () from /usr/lib64/libiam.so.1
#2 0x000003fffff5fa5c in read () from /usr/lib64/libiam.so.1
#3 0x000003ffff4bcce4 in LevelNotifyWatcher (arg=0x0) at ../../../../../../../../../../../runtime/src/dfx/log/liblog/slog/dlog_level_shm.c:353
#4 0x000003fffec8056c in ?? () from /usr/lib64/libc.so.6
#5 0x000003fffece89cc in ?? () from /usr/lib64/libc.so.6
Thread 6 (LWP 4557):
#0 0x000003fffec7d704 in ?? () from /usr/lib64/libc.so.6
#1 0x000003fffec83418 in pthread_mutex_lock () from /usr/lib64/libc.so.6
#2 0x000003ffff4beb38 in ToolMutexLock (mutex=0x3ffff4d4a40 <g_slogMutex>) at ../../../../../../../../../../../runtime/src/dfx/log/utils/log_system_api.c:55
#3 0x000003ffff4b70ec in SlogLock () at ../../../../../../../../../../../runtime/src/dfx/log/liblog/slog/dlog_core.c:52
#4 0x000003ffff4b869c in DlogWriteInner (msgArg=0x3fffcc4dbf8, fmt=0x3ffff6779c8 "%s%s[%s:%d][ascend][curpid:%d,%d][drv][%s][%s][test log] alog input log level=%u\n", v=...) at ../../../../../../../../../../../runtime/src/dfx/log/liblog/slog/dlog_core.c:475
#5 0x000003ffff4b8ac0 in DlogDriverLog (moduleId=10, level=3, fmt=0x3ffff6779c8 "%s%s[%s:%d][ascend][curpid:%d,%d][drv][%s][%s][test log] alog input log level=%u\n") at ../../../../../../../../../../../runtime/src/dfx/log/liblog/slog/dlog_drv.c:60
#6 0x000003ffff6120ac in drv_log_out_handle_register_inner () from /usr/lib64/libascend_hal.so
#7 0x000003ffff612e74 in drv_log_out_handle_register () from /usr/lib64/libascend_hal.so
#8 0x000003ffff52032c in halCtl () from /usr/lib64/libascend_hal.so
#9 0x000003ffff4b8cc4 in DlogDrvRegisterOnce () at ../../../../../../../../../../../runtime/src/dfx/log/liblog/slog/dlog_drv.c:95
#10 0x000003fffec8511c in ?? () from /usr/lib64/libc.so.6
#11 0x000003ffff4b8f38 in DlogInitDriverLog () at ../../../../../../../../../../../runtime/src/dfx/log/liblog/slog/dlog_drv.c:142
#12 0x000003ffff4b8914 in DlogInit () at ../../../../../../../../../../../runtime/src/dfx/log/liblog/slog/dlog_core.c:570
#13 0x000003ffff4b7ec8 in InitLogAndCheckLogLevel (msgArg=0x3fffcc4e488) at ../../../../../../../../../../../runtime/src/dfx/log/liblog/slog/dlog_core.c:283
#14 0x000003ffff4b86e0 in DlogWriteInner (msgArg=0x3fffcc4e488, fmt=0x3ffffec4fb1 "[%s:%d][tid:%d] Run Server(%d) Process\n", v=...) at ../../../../../../../../../../../runtime/src/dfx/log/liblog/slog/dlog_core.c:482
#15 0x000003ffff4b592c in DlogRecord (moduleId=16777217, level=1, fmt=0x3ffffec4fb1 "[%s:%d][tid:%d] Run Server(%d) Process\n") at ../../../../../../../../../../../runtime/src/dfx/log/liblog/slog/slog_api.cpp:394
#16 0x000003ffffebbee4 in Adx::AdxServerManager::ComponentWaitEvent() () from /usr/lib64/libutrace_server.so
#17 0x000003ffffebc178 in Adx::AdxServerManager::Run() () from /usr/lib64/libutrace_server.so
#18 0x000003ffffebf018 in Adx::Runnable::Process(void*) () from /usr/lib64/libutrace_server.so
#19 0x000003fffec8056c in ?? () from /usr/lib64/libc.so.6
#20 0x000003fffece89cc in ?? () from /usr/lib64/libc.so.6
Thread 5 (LWP 4556):
#0 0x000003fffec7d474 in ?? () from /usr/lib64/libc.so.6
#1 0x000003fffec81d38 in ?? () from /usr/lib64/libc.so.6
#2 0x000003ffff489f44 in mmJoinTask () from /usr/lib64/libmmpa.so
#3 0x000003ffffebf254 in Adx::Runnable::Join() () from /usr/lib64/libutrace_server.so
#4 0x000003ffffeb7104 in Adx::ServerRegister::ServerManagerInit(ServerInitInfo) () from /usr/lib64/libutrace_server.so
#5 0x000003ffffeb7198 in Adx::ServerRegister::ComponentServerStartup(ServerInitInfo) const () from /usr/lib64/libutrace_server.so
#6 0x000003ffffeb71d8 in Adx::AdxServerProcess(void*) () from /usr/lib64/libutrace_server.so
#7 0x000003fffec8056c in ?? () from /usr/lib64/libc.so.6
#8 0x000003fffece89cc in ?? () from /usr/lib64/libc.so.6
Thread 4 (LWP 4555):
#0 0x000003fffecb38d0 in clock_nanosleep () from /usr/lib64/libc.so.6
#1 0x000003fffecc479c in nanosleep () from /usr/lib64/libc.so.6
#2 0x000003fffece84a8 in usleep () from /usr/lib64/libc.so.6
#3 0x0000aaaac8c37aa0 in ToolSleep (milliSecond=1000) at ../../../../../../../../../../../../runtime/src/dfx/log/utils/log_system_api.c:714
#4 0x0000aaaac8c3e49c in SessionMgrContExpMonitor (args=0x0) at ../../../../../../../../../../../../../runtime/src/dfx/log/syslog/slog/log_server/log_post_process/session_mgr/log_session_manage.c:472
#5 0x000003fffec8056c in ?? () from /usr/lib64/libc.so.6
#6 0x000003fffece89cc in ?? () from /usr/lib64/libc.so.6
Thread 3 (LWP 4554):
#0 0x000003fffecb38d0 in clock_nanosleep () from /usr/lib64/libc.so.6
#1 0x000003fffecc479c in nanosleep () from /usr/lib64/libc.so.6
#2 0x000003fffece84a8 in usleep () from /usr/lib64/libc.so.6
#3 0x0000aaaac8c37aa0 in ToolSleep (milliSecond=15000) at ../../../../../../../../../../../../runtime/src/dfx/log/utils/log_system_api.c:714
#4 0x0000aaaac8c20e98 in AppLogWatcher (arg=0xaaaac8ca45a8 <g_args>) at ../../../../../../../../../../../../runtime/src/dfx/log/syslog/slog/log_server/log_classify/app_log/slogd_appnum_watch.c:379
#5 0x000003fffec8056c in ?? () from /usr/lib64/libc.so.6
#6 0x000003fffece89cc in ?? () from /usr/lib64/libc.so.6
Thread 2 (LWP 4553):
#0 0x000003fffeceb8f0 in msgrcv () from /usr/lib64/libc.so.6
#1 0x0000aaaac8c362f0 in ToolMsgRcv (msqid=0, buf=0x3fffeb0dee0, bufLen=1024, msgFlag=0, msgType=1) at ../../../../../../../../../../../../runtime/src/dfx/log/utils/msg_queue.c:53
#2 0x0000aaaac8c36578 in MsgQueueRecv (queueId=0, recvData=0x3fffeb0dee0, bufLen=1024, isWait=false, msgType=1) at ../../../../../../../../../../../../runtime/src/dfx/log/utils/msg_queue.c:146
#3 0x0000aaaac8c2da2c in ReceiveAndProcessLogLevel () at ../../../../../../../../../../../../runtime/src/dfx/log/syslog/slog/log_server/log_mgr/level_mgr/slogd_dynamic_level.c:816
#4 0x0000aaaac8c2dcfc in OperateLogLevel (args=0x0) at ../../../../../../../../../../../../runtime/src/dfx/log/syslog/slog/log_server/log_mgr/level_mgr/slogd_dynamic_level.c:866
#5 0x000003fffec8056c in ?? () from /usr/lib64/libc.so.6
#6 0x000003fffece89cc in ?? () from /usr/lib64/libc.so.6
Thread 1 (LWP 4552):
#0 0x000003fffec7d704 in ?? () from /usr/lib64/libc.so.6
#1 0x000003fffec83418 in pthread_mutex_lock () from /usr/lib64/libc.so.6
#2 0x000003ffff4beb38 in ToolMutexLock (mutex=0x3ffff4d4a40 <g_slogMutex>) at ../../../../../../../../../../../runtime/src/dfx/log/utils/log_system_api.c:55
#3 0x000003ffff4b70ec in SlogLock () at ../../../../../../../../../../../runtime/src/dfx/log/liblog/slog/dlog_core.c:52
#4 0x000003ffff4b869c in DlogWriteInner (msgArg=0xffffd57df128, fmt=0x3ffffec1260 "%s:%d create trace server send thread successfully.\n", v=...) at ../../../../../../../../../../../runtime/src/dfx/log/liblog/slog/dlog_core.c:475
#5 0x000003ffff4b592c in DlogRecord (moduleId=16777287, level=1, fmt=0x3ffffec1260 "%s:%d create trace server send thread successfully.\n") at ../../../../../../../../../../../runtime/src/dfx/log/liblog/slog/slog_api.cpp:394
#6 0x000003ffffeac438 in TraceServerCreateSendThread () at ../../../../../../../../../../runtime/src/dfx/trace/atrace/trace_server/send_mgr/trace_send_mgr.c:113
#7 0x000003ffffeaa940 in TraceServerSendProcess () at ../../../../../../../../../../runtime/src/dfx/trace/atrace/trace_server/trace_server_core.c:120
#8 0x000003ffffeaa208 in TraceServerProcess () at ../../../../../../../../../../runtime/src/dfx/trace/atrace/trace_server/trace_server.c:35
#9 0x0000aaaac8c18fe4 in LogTraceServiceProcess () at ../../../../../../../../../../../../runtime/src/dfx/log/syslog/slog/trace_server/slogd_trace_server.c:18
#10 0x0000aaaac8c18b58 in main (argc=2, argv=0xffffd57df528) at ../../../../../../../../../../../../runtime/src/dfx/log/syslog/slog/slogd_main.c:82


实测还发现一个现象,设置级别会触发三次dlog_drv.c:230的打印,看一下是不是有冗余注册的问题,以及维测打印是不是不够明确
Jan 1 08:11:02 (none) user.crit slg_device_argv2: [EVENT][1970-01-01-08:11:02:985412][drv_log_user_kernel_api.c:415][ascend][curpid:24763,24763][drv][log][drv_log_set_module_log_level]DRV set level for modules, level=3.
Jan 1 08:11:02 (none) user.info slg_device_argv2: (24763)dlog_drv.c:230: set log level to drv ok, moduleId=65535, level=3, modNum=2.
Jan 1 08:11:02 (none) user.crit slg_device_argv2: [EVENT][1970-01-01-08:11:02:985490][drv_log_user_kernel_api.c:415][ascend][curpid:24763,24763][drv][log][drv_log_set_module_log_level]DRV set level for modules, level=3.
Jan 1 08:11:02 (none) user.info slg_device_argv2: (24763)dlog_drv.c:230: set log level to drv ok, moduleId=10, level=3, modNum=1.
Jan 1 08:11:02 (none) user.crit slg_device_argv2: [EVENT][1970-01-01-08:11:02:985508][drv_log_user_kernel_api.c:415][ascend][curpid:24763,24763][drv][log][drv_log_set_module_log_level]DRV set level for modules, level=3.
Jan 1 08:11:02 (none) user.info slg_device_argv2: (24763)dlog_drv.c:230: set log level to drv ok, moduleId=15, level=3, modNum=1.
Jan 1 08:11:02 (none) user.info slg_device_argv2: (24763)dlog_drv.c:182: register DlogInner to Hal ok, logLevel=3.
Jan 1 08:11:02 (none) user.info slg_device_argv2: (24763)dlog_drv.c:277: unregister DlogInner from Hal ok.


还有一个测试例失败了,之前做过一个动态库构造函数里懒启动的,要求PlogFlush不在构造函数里启动,分析一下失败原因,是不是因为dlopen后驱动打印日志导致的


plog_mdc场景下出现同一个进程两次注册、两次解注册的流程,是不是因为同时加载slog和alog导致的
Jan 1 00:15:29 AOS user.info slg_device_argv2: (19564)dlog_iam.c:184: iam resource register success, pid = 19564.
Jan 1 00:15:29 AOS user.info slg_device_argv2: (19564)dlog_unified_timer_api.c:39: load unified_timer library succeed.
Jan 1 00:15:29 AOS user.info slg_device_argv2: (19564)dlog_unified_timer_api.c:45: load unified_timer library function succeed.
Jan 1 00:15:29 AOS user.info slg_device_argv2: (19564)dlog_async_process.c:392: add unified timer success, pid = 19564, timerName = slog_send_task_timer.
Jan 1 00:15:29 AOS user.info slg_device_argv2: (19564)dlog_iam.c:136: iam resource status update finished, status = 0, pid = 19564.
Jan 1 00:15:29 AOS user.info slg_device_argv2: (19564)dlog_iam.c:101: open iam service succeed, pid = 19564.
Jan 1 00:15:29 AOS user.info slg_device_argv2: (19564)dlog_level_iam.c:85: global_level=3.
Jan 1 00:15:29 AOS user.info slg_device_argv2: (19564)dlog_level_iam.c:94: g_enableEvent=1.
Jan 1 00:15:29 AOS user.info slg_device_argv2: (19564)dlog_level_env.c:70: set default global log level (3), debug log level (3), run log level (1).
Jan 1 00:15:29 AOS user.warn slg_device_argv2: (19564)dlog_level_env.c:119: get the null ASCEND_MODULE_LOG_LEVEL env
Jan 1 00:15:29 AOS user.warn slg_device_argv2: (19564)dlog_level_env.c:174: can not init log level by ASCEND_MODULE_LOG_LEVEL env, use global log level for all modules
Jan 1 00:15:29 AOS user.info slg_device_argv2: (19564)dlog_level_env.c:40: set default global event level true.
Jan 1 00:15:29 AOS user.info slg_device_argv2: (19564)dlog_drv.c:256: set log level to drv ok, module=ALL_MODULE(DRV+UNIFIEDBUS), level=3, modNum=2.
Jan 1 00:15:29 AOS user.info slg_device_argv2: (19564)dlog_iam.c:136: iam resource status update finished, status = 0, pid = 19564.
Jan 1 00:15:29 AOS user.info slg_device_argv2: (19564)dlog_iam.c:101: open iam service succeed, pid = 19564.
Jan 1 00:15:29 AOS user.info slg_device_argv2: (19564)dlog_iam.c:184: iam resource register success, pid = 19564.
Jan 1 00:15:29 AOS user.info slg_device_argv2: (19564)dlog_unified_timer_api.c:39: load unified_timer library succeed.
Jan 1 00:15:29 AOS user.info slg_device_argv2: (19564)dlog_unified_timer_api.c:45: load unified_timer library function succeed.
Jan 1 00:15:29 AOS user.info slg_device_argv2: (19564)dlog_async_process.c:392: add unified timer success, pid = 19564, timerName = alog_send_task_timer.
Jan 1 00:15:29 AOS user.crit slg_device_argv2: [EVENT][1970-01-01-00:15:29:077536][drv_log_user_kernel_api.c:389][ascend][curpid:19564,19564][drv][log][drv_log_out_handle_register_inner]Register log handle. (log_level=3)
Jan 1 00:15:29 AOS user.info slg_device_argv2: (19564)dlog_drv.c:182: register DlogInner to Hal ok, logLevel=3.
Jan 1 00:15:29 AOS user.info slg_device_argv2: (19564)log_time.c:47: get clock id success, clock id = 100, pid = 19564.
Jan 1 00:15:29 AOS user.info slg_device_argv2: (19564)dlog_drv.c:182: register DlogInner to Hal ok, logLevel=3.
Jan 1 00:15:29 AOS user.info slg_device_argv2: (19564)log_time.c:47: get clock id success, clock id = 100, pid = 19564.
Jan 1 00:15:31 AOS user.info slg_device_argv2: (19564)dlog_drv.c:303: unregister DlogInner from Hal ok.
Jan 1 00:15:31 AOS user.info slg_device_argv2: (19564)dlog_unified_timer_api.c:56: close unified_timer library handle succeed.
Jan 1 00:15:31 AOS user.info slg_device_argv2: (19564)dlog_async_process.c:623: remove unified timer success, pid = 19564, timer name = slog_send_task_timer.
Jan 1 00:15:31 AOS user.info slg_device_argv2: (19564)dlog_async_process.c:733: pid=19564, pid_name=slg_device_argv2 quit, log covered loss num is 0, log level control loss num is 0.
Jan 1 00:15:31 AOS user.info slg_device_argv2: (19564)dlog_iam.c:200: iam resource unregister success, pid = 19564.
Jan 1 00:15:31 AOS user.info slg_device_argv2: (19564)dlog_drv.c:303: unregister DlogInner from Hal ok.
Jan 1 00:15:31 AOS user.info slg_device_argv2: (19564)dlog_unified_timer_api.c:56: close unified_timer library handle succeed.
Jan 1 00:15:31 AOS user.info slg_device_argv2: (19564)dlog_async_process.c:623: remove unified timer success, pid = 19564, timer name = alog_send_task_timer.
Jan 1 00:15:31 AOS user.info slg_device_argv2: (19564)dlog_async_process.c:733: pid=19564, pid_name=slg_device_argv2 quit, log covered loss num is 0, log level control loss num is 0.
Jan 1 00:15:31 AOS user.info slg_device_argv2: (19564)dlog_iam.c:200: iam resource unregister success, pid = 19564.


Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.
Backgroud(背景信息)
功能要求:
1)日志级别发生变化时,log支持将日志级别设置给drv
2)device侧实现与host归一,log支持将日志输出函数注册给drv
Origin(信息来源)
URMA团队
Benefit / Necessity (价值/作用)
urma日志对接到slog日志
Design(设计方案)
UB日志级别定义
typedef enum urma_vlog_level
{
URMA_VLOG_LEVEL_EMERG = 0,
URMA_VLOG_LEVEL_ALERT = 1,
URMA_VLOG_LEVEL_CRIT = 2,
URMA_VLOG_LEVEL_ERR = 3,
URMA_VLOG_LEVEL_WARNING = 4,
URMA_VLOG_LEVEL_NOTICE = 5,
URMA_VLOG_LEVEL_INFO = 6,
URMA_VLOG_LEVEL_DEBUG = 7,
URMA_VLOG_LEVEL_MAX = 8,
urma_vlog_level_t;
日志封装接口伪码:
static int ub2alog_level[8]={3, 3, 3, 3, 2, 1, 1, 0}
void reportUBlog(int level, char *msg){
alogRecord(UB, DLOG_TYPE_DEBUG, ub2alog_level[level], msg);
}
UB的设置日志级别接口为:
void urma_log_set_level(urma_vlog_level_t level); drv需要提供日志级别设置接口给alog,当alog初始化从环境变量读取到日志级别或者应用调用了alog的日志级别设置接口后,alog会调用drv的日志级别设置接口。 drv完成级别的转换后,设置给UB。urma日志注册接口:
urma_status_t urma_register_log_func(urma_log_cb_t func);
依赖关系:
写日志函数注册:log注册给drv函数func1,drv注册给urma函数func2
写日志数据流:urma调用func2传入level和内容,func2内会做级别转换,然后调用func1
设置日志级别:用户调用设置日志级别的接口设置log的日志级别,log会调用drv的接口设置level,需要区分模块(当前只有DRV和URMA,因此需要新增URMA模块枚举)
本issue只关注log跟drv的交互,drv和URMA的交互由其他issue跟踪。
log当前已有部分逻辑,在PlogRegisterDriverLog内注册,但是只在host侧生效,现在需要在device侧也实现类似的逻辑;并将功能做增强
驱动级别设置接口名和参数尚未最终确定,当前初步定为 void halSetLevel(int level, int *modArray, int modNum); 如果设置DRV和URMA的级别一致,可以通过一个数组传入两个模块的module id