Логирование в Unity3D

Каким бы хорошим не был код, а логирование всё равно нужно.

Доказывать важность логирования событий при отладке программ не буду, т.к. любой, кто начинает разрабатывать ПО, быстро ощущает эту необходимость на практике. В Unity3D есть собственная система логирования в консоли — Debug.Log(). Но как только от разработки дело переходит к тестированию — консоль уже не помощник. Да и в процессе написания кода иногда требуется история логов.

Лично я пользуюсь простым, но вполне функциональным скриптом. Скрипт LogFile:

private FileInfo _file;
private string _name;
private string _filePath = "GameLog\\";

public LogFile (string _newName) {
	_name = _filePath + thisDate() + _newName + ".log";
	_file = new FileInfo(_name);
	if (!File.Exists(_name)) _file.Create();
}

public void AddInfo(string _data) {
	StreamWriter sw = new StreamWriter(File.Open(_name, FileMode.Append, FileAccess.Write));
	sw.WriteLine(_data);
	sw.Close();
}

public void AddTime(string _data) {
	StreamWriter sw = new StreamWriter(File.Open(_name, FileMode.Append, FileAccess.Write));
	sw.WriteLine(thisTime() + _data);
	sw.Close();
}

private string thisDate(){
	string temp = "";
	string _date = DateTime.Today.ToString();
	string[] temp2 = new string[3];
	temp2 = _date.Split(new Char [] {'/',' '});
	temp = temp2[2]+"_"+temp2[0]+"_"+temp2[1]+"-";
	return temp;
}

private string thisTime(){
	string temp = "";
	string _date = DateTime.Now.ToString();
	string[] temp2 = new string[3];
	temp2 = _date.Split(new Char [] {' '});
	temp = temp2[1] + " ";
	return temp;
}

Для использования нужно в рабочем скрипте объявить переменную для логирования и указать имя для файлов с логами

private LogFile _logs = new LogFile("Test");

Для записи в лог используются две команды AddInfo() и AddTime(). Первая записывает переданный текст, а вторая перед текстом ещё ставит время передачи текста. Файлы создаются с указанием даты, и для одного дня будет использован один и тот же лог-файл.
Скачать пример (817)

About

19 thoughts on “Логирование в Unity3D

  1. Read reviews and was a little hesitant since I had already inputted my order. or maybe but thank god, I had no issues. which includes the received item in a timely matter, they are in new condition. blue jays so happy I made the purchase. Will be definitely be purchasing again.
    cheap real jordans https://www.realjordansshoes.com/

  2. Возможно, что AddInfo/AddTime используется только в событии клика мышки. Вставьте _logs.AddTime(«function1 start») в начале любой используемой вами функции и посмотрите, что будет в логах после запуска программы.

  3. Чому у мене тільки записується клік мишки в лог ?

Добавить комментарий

Ваш e-mail не будет опубликован.