Skip to content

Logger uses lots of CPU time as entries are added #350

Open
@arbokrad

Description

@arbokrad

Package Edition of Nebula Logger

Unlocked Package

Package Version of Nebula Logger

4.6.11

New Bug Summary

The logger appears to use a lot of CPU time as the number of times the logger is invoked grows:

Consider the following test class and measured CPU usage over multiple runs:

@IsTest(IsParallel=true)
private class TEST_Example {
	/**
	 * Sample CPU usages:
	 * 	1 - 885
	 * 	2 - 851
	 * 	3 - 798
	 * 	4 - 976
	 * 	5 - 1180
	 */
	@IsTest
	static void nebula_100_logs() {
		for( Integer i = 0; i < 100; i++ ) {
			Logger.debug('a' );
		}
	}

	/**
	 * Sample CPU usages:
	 * 	1 - 2891
	 * 	2 - 2937
	 * 	3 - 3116
	 * 	4 - 3071
	 * 	5 - 3234
	 */
	@IsTest
	static void nebula_250_logs() {
		for( Integer i = 0; i < 250; i++ ) {
			Logger.debug('a' );
		}
	}

	/**
	 * Sample CPU usages:
	 * 	1 - 7800
	 * 	2 - 7588
	 * 	3 - 9054
	 * 	4 - 8824
	 * 	5 - 8979
	 */
	@IsTest
	static void nebula_500_logs() {
		for( Integer i = 0; i < 500; i++ ) {
			Logger.debug('a' );
		}
	}

	/**
	 * Sample CPU usages (included because it appears to be approximately the boundary):
	 * 	1 - 14881
	 * 	2 - 14334
	 * 	3 - Exceeded CPU usage
	 * 	4 - Exceeded CPU usage
	 * 	5 - 14406
	 */
	@IsTest
	static void nebula_725_logs() {
		for( Integer i = 0; i < 725; i++ ) {
			Logger.debug('a' );
		}
	}

	/**
	 * Sample CPU usages:
	 * 	1 - Exceeded CPU usage
	 * 	2 - Exceeded CPU usage
	 * 	3 - Exceeded CPU usage
	 * 	4 - Exceeded CPU usage
	 * 	5 - Exceeded CPU usage
	 */
	@IsTest
	static void nebula_1000_logs() {
		for( Integer i = 0; i < 1000; i++ ) {
			Logger.debug('a' );
		}
	}
}

Visualized:
image

CPU usage appears to rise smoothly until it hits the hard cap of 15000 and starts failing.

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions