Skip to content

Yet another Logger class for MATLAB: singleton-like logging, supporting parallel pools

License

Notifications You must be signed in to change notification settings

ZAKOVYIKA/Logger

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 

Repository files navigation

Logger - класс для логирования и вывода текста в консоль.
Logger is a class for logging and outputting text to the console.

Может использоваться как в распараллеленном коде, так и в обычном. В распараллеленном коде сразу после объявлений любых parallel pool нужно вызвать инициализацию на них через setupOnWorkers (см.ниже).
It can be used both in parallelized code and in regular code. In the parallelized code, immediately after declaring any parallel pools, initialization must be called on them via setupOnWorkers (see below).

Автоматически выбирает глубину отступа в зависимости от глубины вызова. Также глубина отступа может форсироваться при прямой передаче во write.
Automatically selects the indentation depth depending on the depth of the call. The indentation depth can also be formed during direct transfer to write.

Первичная инициализация|Initialization

dataQueueObj = parallel.pool.DataQueue;
Logger.setLogger(defaultLogPath, dataQueue = dataQueueObj);
Logger.dispLogger();
Logger.write("Запущен проект и инициализован Logger\n");

Инициализация в parallel pool|Initialization in the parallel pool

Как нужно действовать при объявлении распараллеленных операций с логированием.
How to proceed when declaring parallelized logging operations.

Вариант 1 (рекомендуемый)|Option 1 (recommended):

Вызвать через setupOnWorkers сразу после инициализации мультипоточности.
Call via setupOnWorkers immediately after multithreading initialization.

...
curPool = parpool("Threads", 8);
Logger.setupOnWorkers(curPool);
Logger.write("Запрос на инициализацию Logger на всех процессах отправлен успешно.")
parfor idx = 1:10
	Logger.write(sprintf("Поток %d ", idx));
	...
end
Logger.write("Parfor закончился");

Вариант 2 (тоже рекомендуемый)|Option 2 (also recommended):

Вызвать где-то, но обязательно уже должен существовать parallel pool.
Call the parallel pool somewhere, but it must already exist.

...
Logger.setupOnWorkers(gcp('nocreate'))
Logger.write("Запрос на инициализацию Logger на всех процессах отправлен успешно.")
parfor idx = 1:10
	Logger.write(sprintf("Поток %d ", idx));
	...
end
Logger.write("Parfor закончился");

Вариант 3 (устарел, но должен работать)|Option 3 (outdated, but should work):

Передавать данные руками
Transmit data by hand

...
[defPath, dataQueue] = Logger.getLoggerSettings();
parfor idx = 1:10
	Logger.setLogger(defPath, dataQueue);
	Logger.write(sprintf("Поток %d ", idx));
	...
end

Logger.write("Parfor закончился");

Благодарности|Acknowledgments:

About

Yet another Logger class for MATLAB: singleton-like logging, supporting parallel pools

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages