目录

hilog

HiLog is a log system that provides logging for the system framework, services, and applications to record information on user operations and system running status. You can run the hilog commands to query related log information.

Environment Setup

HiLog Overview

[h2]Log Generation

If the HiLog API is called in the service code, HiLog logs are generated during service running.

[h2]Viewing Logs

Online Checking

[h2]Log Format

Date Time Process ID Thread ID Log level Domain ID/Log tag: Log content
04-19 17:02:14.735  5394  5394 I A03200/test_server/testTag: this is a info level hilog

This is an info log with domainID 0x3200, process name test_server, and tag testTag.

NOTE:

Commands

Short Option Long Option Parameter Description
-h --help - Help command.
default default - Blocking read of logs without exiting.
-x --exit - Non-blocking read of logs, exiting after reading.
-a --head <n> Display only the first <n> lines of logs.
-z --tail <n> Display only the last <n> lines of logs.
-t --type <type> View logs of a specified type.
- - app View app logs.
- - core View system logs.
- - init View init logs.
- - kmsg View kernel logs.
- - only_prerelease View logs printed only before the system release version. You do not need to pay attention to this type.
-L --level <level> Specify the log level, for example: -L D/I/W/E/F.
-D --domain <domain> Specify the domain.
-T --tag <tag> Specify the tag.
-P --pid <pid> Identify different PIDs.
-e --regex <expr> Print only lines whose log message matches <expr>, where <expr> is a regular expression.
-v --format <format> Display format control.
- - color/colour Display different colors for different levels. The default is black-and-white mode.
- - time Display local time.
- - epoch Display time relative to 1970.
- - monotonic Display time relative to system startup.
- - msec Display time with millisecond precision.
- - usec Display time with microsecond precision.
- - nsec Display time with nanosecond precision.
- - year Add the year to the displayed time.
- - zone Add the local time zone to the displayed time.
- - wrap When a log line wraps, do not add prefixes such as timestamps to the new line.
- - long Display all data fields, with information separated by spaces.
-r - - Clear buffer logs. Use with -t to specify a type. The default types are app and core.
-g - - Query the buffer size. Use with -t to specify a type. The default types are app and core.
-G --buffer-size <size> Set the buffer size for the specified log <type>. Use with -t to specify a type. The default types are app and core. The unit can be B/K/M, with a range of 64K to 16M.
-s --statistics - Query statistics. Must be used with -t or -D.
-S - - Clear statistics. Must be used with -t or -D.
-w --write <control> Persist task control.
- - query Query persist tasks.
- - start Start a persist task. The command-line parameters are the file name, single file size, persist algorithm, and number of rotate files.
- - stop Stop the persist task.
- - refresh Flush logs from the buffer to the persist file.
- - clear Delete the persisted log files.
-f --filename <filename> Set the persist file name.
-l --length <length> Set the persist file size, which must be greater than or equal to 64K.
-n --number <number> Set the number of persist files.
-m --stream <algorithm> Persist mode control.
- - none Persist without compression.
- - zlib Persist using the zlib compression algorithm. The persist file has the .gz extension.
-j --jobid <jobid> Set the persist task ID.
-p --privacy <on/off> Control the log privacy switch during system debugging.
- - on Turn on the privacy switch, displaying <private>.
- - off Turn off the privacy switch, displaying plaintext.
-k - <on/off> Control the kernel log read switch.
- - on Turn on kernel log reading.
- - off Turn off kernel log reading.
-Q - <control-type> Control the flow control default quota switch.
- - pidon Turn on process flow control.
- - pidoff Turn off process flow control.
- - domainon Turn on domain flow control.
- - domainoff Turn off domain flow control.
-b --baselevel <loglevel> Set the minimum log level that can be printed: D(DEBUG)/I(INFO)/W(WARN)/E(ERROR)/F(FATAL). Can be used with -D and -T to set the minimum log level for a specified log.
- --persist - Persist the log level setting command (the setting is retained after a restart).

Displaying the Help Information

hilog -h

Example

 $ hilog -h
 Usage:
 -h --help
   Show all help information.
   Show single help information with option:
   query/clear/buffer/stats/persist/private/kmsg/flowcontrol/baselevel/domain/combo
 Querying logs options:
   No option performs a blocking read and keeps printing.
   -x --exit
     Performs a non-blocking read and exits when all logs in buffer are printed.
   -a <n>, --head=<n>
     Show n lines logs on head of buffer.
   -z <n>, --tail=<n>
     Show n lines logs on tail of buffer.

Non-Blocking Log Reading

hilog -x

Example

   $ hilog -x
   11-15 15:51:02.087  2823  2823 I A01B05/com.ohos.sceneboard/AOD: AodClockFullScreen --> timeTextLineHeight:313.3333333333333 clockMarginTop:99
   11-15 15:51:02.087  2823  2823 I A01B05/com.ohos.sceneboard/AOD: AodClockFullScreen --> timeFontSize:114.48717948717947
   11-15 15:51:02.090  2823  2823 I A01B05/com.ohos.sceneboard/AOD: AodClockFullScreen --> timeTextWidth:202,timeTextHeight:292
   11-15 15:51:02.100  2823  2823 I A01B05/com.ohos.sceneboard/AOD: ComponentUtil --> Component(ComponentId-AodClockNumber) draw complete.
   11-15 15:51:02.110  1197  1197 E C01406/render_service/OHOS::RS: [LoadImgsbyResolution] Can't find resolution (1084 x 2412) in config file
   11-15 15:51:02.127  1197  1197 E C01406/render_service/OHOS::RS: [LoadImgsbyResolution] Can't find resolution (1084 x 2412) in config file

Viewing Logs of a Specified Level

hilog -L D/I/W/E/F

Example

   $ hilog -L E
   08-28 09:01:25.730  2678  2678 E A00F00/com.aidataservice/AiDataService_5.10.7.320: DataChangeNotifyManager: notifyDataChange CommonEntity no valid entity to notify
   08-28 09:01:56.058  8560  8560 E A00500/com.ohos.settingsdata/SettingsData: DB not ready request = datashare:///com.ohos.settingsdata/entry/settingsdata/SETTINGSDATA?Proxy=true&key=analysis_service_switch_on , retry after DB startup
   08-28 09:01:56.082  8560  8560 E A00500/com.ohos.settingsdata/SettingsData: decoder failure: /data/migrate/settings_global.xml , error code:-1
   08-28 09:01:56.082  8560  8560 E A00500/com.ohos.settingsdata/SettingsData: clearXml failed:No such file or directory, error code:13900002
   08-28 09:01:56.083  8560  8560 E A00500/com.ohos.settingsdata/SettingsData: readText failed:No such file or directory, error code:13900002
   08-28 09:01:56.371  8586  8586 E A00500/com.ohos.settingsdata/SettingsData: DB not ready request =    datashare:///com.ohos.settingsdata/entry/settingsdata/SETTINGSDATA?Proxy=true&key=photo_network_connection_status , retry after DB startup
   08-28 09:01:56.408  8586  8586 E A00500/com.ohos.settingsdata/SettingsData: decoder failure: /data/migrate/settings_global.xml , error code:-1

Viewing Logs of a Specified Type

hilog -t app

Example

   $ hilog -t app
   11-15 16:04:45.903  5630  5630 I A0A5A5/os.hiviewcare:staticSubscriber/Diagnosis: [DetectionFilter]820001084: switch off
   11-15 16:04:45.905  5630  5630 I A0A5A5/os.hiviewcare:staticSubscriber/Diagnosis: [DetectionFilter]847005050: frequency limit
   11-15 16:04:45.905  5630  5630 I A0A5A5/os.hiviewcare:staticSubscriber/Diagnosis: [SmartNotifyHandler]detections after filter: []
   11-15 16:04:45.905  5630  5630 I A0A5A5/os.hiviewcare:staticSubscriber/Diagnosis: [SmartNotifyHandler]no detections to detect
   11-15 16:04:45.924  5687  5687 I A01B06/common/KG: MetaBalls-SystemTopPanelController --> init charging status = 3

Viewing Logs of a Specified Domain

hilog -D 01B06

Example

   $ hilog -D 01B06
   11-15 16:04:54.981  5687  5687 I A01B06/common/KG: MetaBalls-MetaBallRenderer --> pressTime = 0 appearTime = 1731657885972
   11-15 16:04:54.981  5687  5687 I A01B06/common/KG: MetaBalls-MetaBallRenderer --> backAnimator on finish
   11-15 16:04:54.982  5687  5687 I A01B06/common/KG: MetaBalls-MetaBallRenderer --> setTimeout over 9s and begin animate on finish
   11-15 16:04:55.297  5687  5687 I A01B06/common/KG: MetaBalls-MetaBallRenderer --> chargingTextExitAnimation onFinish
   11-15 16:04:55.494  5687  5687 I A01B06/common/KG: MetaBalls-MetaBallRenderer --> uiExtension session send data success,type: exitAnimationFinish

Viewing Logs of a Specified Domain

hilog -T tag

Example

   $ hilog -T SAMGR
   08-28 09:27:59.581   610 11504 I C01800/samgr/SAMGR: CommonEventCollect save extraData 1661
   08-28 09:27:59.581   610 11504 I C01800/samgr/SAMGR: OnReceiveEvent get action: usual.event.BATTERY_CHANGED code: 0, extraDataId 1661
   08-28 09:27:59.582   610 11504 I C01800/samgr/SAMGR: DoEvent:4 name:usual.event.BATTERY_CHANGED value:0
   08-28 09:27:59.582   610 11504 W C01800/samgr/SAMGR: LoadSa SA:10120 AddDeath fail,cnt:1,callpid:610
   08-28 09:27:59.583   610 11504 I C01800/samgr/SAMGR: LoadSa SA:10120 size:1,count:1
   08-28 09:27:59.601   610 11504 I C01800/samgr/SAMGR: Scheduler SA:10120 loading
   08-28 09:27:59.965 11518 11518 I C01800/media_analysis_service/SAMGR: SA:10120 OpenSo spend 315ms
   08-28 09:27:59.965   610  4064 I C01800/samgr/SAMGR: AddProc:media_analysis_service. size:75

Viewing the First n Lines of Logs in the Buffer

hilog -a 8

Example

   $ hilog -a 8
   11-15 16:04:08.628     0     0 I I00000/HiLog: ========Zeroth log of type: init
   11-15 16:04:08.603   506   506 I I02C01/cust_carrier_mount/CustCarrierMount: MountCarrierToShared start
   11-15 16:04:08.604   506   506 I I02C01/cust_carrier_mount/CustCarrierMount: success to mount carrier to shared
   11-15 16:04:15.394   972   972 I I02C01/cust_carrier_mount/CustCarrierMount: UpdateCotaOpkeyLink start
   11-15 16:04:15.396   972   972 W I02C01/cust_carrier_mount/CustCarrierMount: not exsit CUST_GLOBAL_CARRIER_DIR or COTA_PARAM_CARRIER_DIR
   11-15 16:04:15.887   972   972 I I02C01/cust_carrier_mount/CustCarrierMount: success to update cota carrier
   11-15 16:04:48.749  5777  5901 I A00001/com.hiai.core/HiAI_Metadata: metadata is null
   11-15 16:04:48.749  5777  5901 I A00001/com.hiai.core/HiAI_PluginAbilityInfo: abilityInfo is null

Viewing the Last n Lines of Logs in the Buffer

hilog -z 8

Example

   $ hilog -z 8
   11-15 16:12:19.015  1899  7867 W C01719/wifi_manager_service/ffrt: 423:FFRTQosApplyForOther:244 tid 7867, Operation not permitted, ret:-1, eno:1
   11-15 16:12:19.125  1043  1072 I C01C42/time_service/TimeService: uid: 1010 id:428551571 name:wifi_manager_service wk:0
   11-15 16:12:19.125  1043  1072 I C01C42/time_service/TimeService: bat: -1 id:428551571 we:505225000000 mwe:512725000000
   11-15 16:12:19.125  1043  1072 I C01C42/time_service/TimeService: typ:3 trig: 505 225000000, bt: 495230369193
   11-15 16:12:19.125  1043  1072 I C01C42/time_service/TimeService: cb: 428551571 ret: 0
   11-15 16:12:19.435  3086  7813 I C01719/com.ohos.contactsdataability/ffrt: 45:~WorkerThread:72 to exit, qos[3]
   11-15 16:12:19.691   800  1404 I C01713/resource_schedule_service/SUSPEND_MANAGER: [(HasSpecialStateFromBgtask):759] 20020107_com.ohos.medialibrary.medialibrarydata
   11-15 16:12:19.691   800  1404 I C01713/resource_schedule_service/SUSPEND_MANAGER: [(DozeFreezeUnit):890] Doze has special:ERR_HAS_PID_EFFICIENCY_RESOURCE

Viewing Logs of a Specified Process

hilog -P pid

Example

   $ hilog -P 618
   08-28 10:19:16.872   618 17729 I C02D15/hiview/XPower: [task_52]#current system load is: 0.028767
   08-28 10:19:23.997   618 17580 I C02D10/hiview/CpuCollector: CalculateProcessCpuStatInfos: startTime=1724811553746, endTime=1724811563996, startBootTime=47001084, endBootTime=47011335, period=10251
   08-28 10:19:23.999   618 17580 I C02D10/hiview/CpuCollector: CollectProcessCpuStatInfos: collect process cpu statistics information size=234, isNeedUpdate=1
   08-28 10:19:24.002   618 17580 W C01650/hiview/Rdb:  DB :
   08-28 10:19:24.002   618 17580 W C01650/hiview/Rdb:  device: 12583051 inode: 40230 mode: 432 size: 569344 natime: Wed Aug 28 00:00:06 2024
   08-28 10:19:24.002   618 17580 W C01650/hiview/Rdb:  smtime: Wed Aug 28 00:34:30 2024
   08-28 10:19:24.002   618 17580 W C01650/hiview/Rdb:  sctime: Wed Aug 28 00:34:30 2024

Viewing Logs That Match the Regular Expression Keyword

hilog -e start

Example

   $ hilog -e start
   11-15 16:17:17.578   547  4504 I C01800/SAMGR: AddProc start proc:media_analysis_service spend 223ms
   11-15 16:17:17.578   547  4504 I C01800/SAMGR: Scheduler proc:media_analysis_service handle started event
   11-15 16:17:17.578   547  4504 I C01800/SAMGR: Scheduler proc:media_analysis_service started
   11-15 16:17:17.580  8877  8877 I C01810/media_analysis_service/SAFWK: start tasks proc:media_analysis_service end,spend 1ms
   11-15 16:17:17.582  8877  8877 I C01651/media_analysis_service/DataShare: [operator()()-data_share_manager_impl.cpp:134]: RecoverObs start
   11-15 16:17:17.589  8877  8893 I C01651/media_analysis_service/DataShare: [Connect()-ams_mgr_proxy.cpp:67]: connect start, uri = ******/media
   11-15 16:17:18.225  1155  1633 I C02943/power_host/ThermalHdi: CreateLogFile start
   11-15 16:17:18.264  1155  1633 I C02943/power_host/ThermalHdi: CompressFile start

Viewing Logs in Different Formats

hilog -v time/color/epoch/monotonic/usec/nsec/year/zone/wrap

Example

Display the local time in milliseconds.

   $ hilog -v time
   11-15 16:36:21.027  1134  1723 I C02B01/riladapter_host/HrilExt: [NotifyToBoosterTel-(hril_manager_ext.cpp:440)] RilExt:Notify to booster tel finish
   11-15 16:36:21.027  1134  1723 I C02B01/riladapter_host/HrilExt: [NotifyToBoosterNet-(hril_manager_ext.cpp:450)] RilExt: HNOTI_BOOSTER_NET_IND report to booster net
   11-15 16:36:21.027  1134  1723 I C02B01/riladapter_host/HrilExt: [NotifyToBoosterNet-(hril_manager_ext.cpp:454)] RilExt: HNOTI_BOOSTER_NET_IND report to booster net finish
   11-15 16:36:21.027  1134  1723 I P01FFF/riladapter_host/Rilvendor: CHAN [HandleUnsolicited] HandleUnsolicited done for modem:0, index:0, atResponse:^BOOSTERNTF: 3, 20,"0600100001000004000000000102A4FF0202F6FF"
   11-15 16:36:21.802  2809  2831 E C02D06/com.ohos.sceneboard/XCollie: Send kick,foundation to hungtask Successful
   11-15 16:36:21.911   882  3016 I C01F0B/telephony/TelephonyVSim: state machine ProcessEvent Id: 125
   11-15 16:36:21.911   882  3016 I C01F0B/telephony/TelephonyVSim: StateProcess

   $ hilog -v nsec
   11-15 16:37:09.010658555  1134  1723 I C02B01/riladapter_host/HrilExt: [BoosterRawInd-(hril_booster.cpp:296)] RilExt: BoosterRawInd
   11-15 16:37:09.010676263  1134  1723 I C02B01/riladapter_host/HrilExt: [BoosterRawInd-(hril_booster.cpp:328)] check need notify to satellite:indType 6
   11-15 16:37:09.010800221  1134  1723 I C02B01/riladapter_host/HrilExt: [NotifyToBoosterTel-(hril_manager_ext.cpp:436)] RilExt: report to telephony ext, requestNum: 4201
   11-15 16:37:09.011011680  1134  1723 I C02B01/riladapter_host/HrilExt: [NotifyToBoosterTel-(hril_manager_ext.cpp:440)] RilExt:Notify to booster tel finish
   11-15 16:37:09.011064805  1134  1723 I C02B01/riladapter_host/HrilExt: [NotifyToBoosterNet-(hril_manager_ext.cpp:450)] RilExt: HNOTI_BOOSTER_NET_IND report to booster net
   11-15 16:37:09.011200742  1134  1723 I C02B01/riladapter_host/HrilExt: [NotifyToBoosterNet-(hril_manager_ext.cpp:454)] RilExt: HNOTI_BOOSTER_NET_IND report to booster net finish

Checking and Setting Persisting Tasks

Viewing persist tasks

hilog -w query

No persist task exists:

$ hilog -w query
Persist task query failed
No running persistent task [CODE: -63]

Persist tasks exist:

$ hilog -w query
1 init,core,app,only_prerelease zlib /data/log/hilog/hilog 4.0M 1000
2 kmsg zlib /data/log/hilog/hilog_kmsg 4.0M 100

Enabling a persist task

You can only enable a persist task when no persist task exists. If a persist task exists, stop it first.

Enable a HiLog persist task and set the number of persist files to 1000.

$ hilog -w start -n 1000
Persist task [jobid:1][fileNum:1000][fileSize:4194304] start successfully

Enable a kmsglog persist task and set the number of persist files to 100.

$ hilog -w start -n 100 -t kmsg
Persist task [jobid:2][fileNum:100][fileSize:4194304] start successfully

When enabling a persist task, you can customize the persist rules. The compression mode can be zlib, zstd, or none.

For example, run the following command to set the persistent file name to kmsglog, file size to 2 MB, number of files to 100, and compression mode to zlib:

$ hilog -w start -t kmsg -f kmsglog -l 2M -n 100 -m zlib
Persist task [jobid:2][fileNum:100][fileSize:2097152] start successfully

Disabling a persist task

Stop the current persist task:

$ hilog -w stop
Persist task [jobid:1] stop successfully
Persist task [jobid:2] stop successfully

Displaying and Setting Log Levels

Viewing the Global Log Level

$ param get hilog.loggable.global
I

The global log level is INFO by default.

Setting Log Levels

// Set the global log level.
hilog -b D/I/W/E/F
// Set the global log level. The setting still takes effect after the device is restarted.
hilog -b D/I/W/E/F --persist
// Set the log output level for [DOMAINID] of the LOG_APP type.
hilog -b D/I/W/E/F -D 0x[DOMAINID]
// Set the log output level for [DOMAINID] of the LOG_CORE type.
hilog -b D/I/W/E/F -D d0[DOMAINID]
// Set the log output level for [TAG].
hilog -b D/I/W/E/F -T [TAG]

Example:

$ hilog -b E
Set global log level to E successfully
$ hilog -b E --persist
Set global log level to E successfully
Set persist global log level to E successfully
$ hilog -b D -D 0x2d00
Set domain 0x2d00 log level to D successfully
$ hilog -b D -D d001719
Set domain 0xd001719 log level to D successfully
$ hilog -b E -T testTag
Set tag testTag log level to E successfully

Other Common Commands

[h2]Displaying the Log Buffer Size

hilog -g

Example

$ hilog -g
Log type app buffer size is 16.0M
Log type init buffer size is 16.0M
Log type core buffer size is 16.0M
Log type only_prerelease buffer size is 16.0M

[h2]Setting the Log Buffer Size

hilog -G size

Example

$ hilog -G 16M
Set log type app buffer size to 16.0M successfully
Set log type init buffer size to 16.0M successfully
Set log type core buffer size to 16.0M successfully
Set log type only_prerelease buffer size to 16.0M successfully

[h2]Clearing the Log Buffer

hilog -r

Example

$ hilog -r
Log type core,app,only_prerelease buffer clear successfully

[h2]Setting Kernel Log Reading

hilog -k on/off

Example

$ hilog -k on
Set hilogd storing kmsg log on successfully

$ hilog -k off
Set hilogd storing kmsg log off successfully

[h2]Displaying Statistics

hilog -s

You need to run the param set persist.sys.hilog.stats true command to enable the statistics functionality, and restart the device before starting statistics collection.

Example

$ param set persist.sys.hilog.stats true
Set parameter persist.sys.hilog.stats true success
$ reboot
$ hilog -s
Log statistic report (Duration: 0h0m32s.564, From: 11-15 16:04:08.628):
Total lines: 137517, length: 8.0M
DEBUG lines: 0(0%), length: 0.0B(0%)
INFO lines: 101795(74%), length: 6.1M(76%)
WARN lines: 10268(7.5%), length: 719.9K(8.8%)
ERROR lines: 25452(19%), length: 1.2M(15%)
FATAL lines: 2(0.0015%), length: 259.0B(0.0031%)
------------------------------------------------------------
Domain Table:
LOGTYPE- DOMAIN---- TAG----------------------------- MAX_FREQ-- TIME---------------- MAX_TP---- TIME---------------- LINES----- LENGTH---- DROPPED---
app----- 0xf00----- -------------------------------- 924.00---- 11-15 16:04:25.594-- 111975.00- 11-15 16:04:25.594-- 3386------ 371.5K---- 0---------
app----- 0x0------- -------------------------------- 285.00---- 11-15 16:04:34.877-- 44242.00-- 11-15 16:04:34.877-- 990------- 129.2K---- 0---------

Description

MAX_FREQ: the maximum number of log lines per second
TIME: occurrence time
MAX_TP: the maximum number of bytes per second
LINES: the total number of lines in a statistical period
LENGTH: the total number of bytes in a statistical period
DROPPED: the number of dropped lines in a statistical period

[h2]Clearing Statistics

hilog -S

Example

$ hilog -S
Statistic info clear successfully

[h2]Setting Process Flow Control

hilog -Q pidon/pidoff

Example

Enable process flow control:

$ hilog -Q pidon
Set flow control by process to enabled successfully

Disable process flow control:

$ hilog -Q pidoff
Set flow control by process to disabled successfully

[h2]Setting Domain Flow Control

hilog -Q domainon/domainoff

Example

Enable domain flow control:

$ hilog -Q domainon
Set flow control by domain to enabled successfully

Disable domain flow control:

$ hilog -Q domainoff
Set flow control by domain to disabled successfully

HiLog Flow Control Mechanism

When the number of logs exceeds the upper limit, the HiLog flow control mechanism is triggered. After this mechanism is triggered, excessive logs are discarded, and a warning log is generated. By default, this mechanism is disabled for debug applications.

The flow control mechanism is as follows:

[h2]Application Logs

The flow control is performed by process. The application logs printed in the LOG_APP buffer adapt to the PID flow control mechanism. When the number of logs of the LOG_APP type printed by a process exceeds the threshold within one second, the flow control is triggered. The following example shows the warning log:

04-19 17:02:34.219  5394  5394 W A00032/com.example.myapplication/LOGLIMIT: ==com.example.myapplication LOGS OVER PROC QUOTA, 3091 DROPPED==

This log indicates that the number of logs printed by the** com.example.myapplication** process exceeds the upper limit. Before 17:02:34.219, 3091 lines of logs are discarded due to the upper limit control.

Handling method: Refer to Setting Process Flow Control to disable the corresponding control mechanism. It is recommended that each app process print no more than 50 KB of logs per second. Otherwise, log overlimit may be triggered, resulting in log loss.

[h2]System Logs

The flow control is performed by domain ID. The system logs printed in the LOG_CORE buffer adapt to the domain flow control mechanism. When the number of logs of the LOG_CORE type printed by a domain ID exceeds the threshold within one second, the flow control is triggered. The following is an example of the warning log:

04-19 17:02:34.219  5394  5394 W C02C02/system_test/LOGLIMIT: 108 line(s) dropped in a second!

This log indicates that the number of logs whose domain ID is 02C02 exceeds the upper limit. Before 17:02:34.219, 108 lines of logs are discarded due to the upper limit control.

Handling method: Refer to Setting Domain Flow Control to disable the corresponding control mechanism. It is recommended that each domain ID print no more than 50 KB of logs per second. Otherwise, log overlimit may be triggered, resulting in log loss.

Handling Log Loss

Currently, maintenance and debugging information is available in all log loss scenarios. You can search for the corresponding keyword in HiLog to view the causes.

You can use regular expressions to search for log lines containing the keywords LOGLIMIT, Slow reader missed, and write socket failed.

LOGLIMIT indicates that log loss occurs due to process or domain flow control. Slow reader missed indicates that global logs are lost. write socket failed indicates that process logs are lost.

When these messages are displayed, logs are lost and cannot be restored.

If the log loss issue occurs in the online O&M scenario, rectify the fault by referring to the following method, reproduce the issue locally, and view the complete logs.

[h2]LOGLIMIT

LOGLIMIT indicates that the number of printed logs exceeds the threshold defined by the process or domain flow control. If domain logs exceed the HiLog specifications, you must reduce and correct them at the domain level. The following is an example of the warning log:

04-19 17:02:34.219  5394  5394 W A00032/com.example.myapplication/LOGLIMIT: ==com.example.myapplication LOGS OVER PROC QUOTA, 3091 DROPPED==

Solution: Disable the corresponding control mechanism by referring to HiLog Flow Control Mechanism

[h2]Slow reader missed

Slow reader missed indicates that a large number of logs are generated before and after the printing time point. As a result, the logs in the HiLog buffer are overwritten circularly before they are persisted. The following is an example of the warning log:

04-19 17:02:34.219     0     0 I C00000/HiLog: ========Slow reader missed log lines: 137

Cause: Global logs are lost in any of the following situations:

Solution

[h2]write socket failed

write socket failed indicates that logs fail to be written into the socket and packet loss occurs. The following is an example of the warning log:

04-19 17:02:34.219  5394  5394 W A00032/com.example.myapplication/HiLog: write socket failed, 8 line(s) dropped!

Cause: Process logs are lost in any of the following situations:

Solution: Disable the log printing of other domains and print only the logs of the current module.