У меня есть программа в которой я использую sl4j, для логов пишу log.info() . Как можно создать отдельный файл для логов в проекте?
Отслеживать
задан 19 фев 2020 в 9:34
Артём Курилко Артём Курилко
39 7 7 бронзовых знаков
Нужно сконфигурировать лог, в нем указав файлы, куда вы будете его писать. sl4j — это интерфейс, кинфигурация зависит от библиотеки логгирования. Если это log4j, то в log4j.properties нужно сконфигурировать.
19 фев 2020 в 10:30
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
logging.file.name=fileExample.log
Вариант без спринга resources/logback.xml
myLogFile.log true %d [%thread] %-5level %logger — %msg%n
import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class LogbackTest < public static Logger slf4jLogger = LoggerFactory.getLogger(LogbackTest.class); public static void main(String[] args) < slf4jLogger.trace(«Hello World!»); String name = «Abhijit»; slf4jLogger.debug(«Hi, <>», name); slf4jLogger.info(«Welcome to the HelloWorld example of Logback.»); slf4jLogger.warn(«Dummy warning message.»); slf4jLogger.error(«Dummy error message.»); > >
Источник: ru.stackoverflow.com
Как создать папку или файл на компьютере
Куда класть логи своего приложения в Linux?
Появилась необходимость складирования логов приложения, точнее лог файл один. Подскажите, пожалуйста, куда в Linux принято складывать log файлы? Так, чтобы пользователь ожидал их именно там. Может есть какой-то guide по расположению данных приложения ы Linux? Был бы благодарен за ссылки.
Я пытался положить лог в /var/log но получил пинок от ACL, собственно w туда простому смертному запрещен.
- Вопрос задан более трёх лет назад
- 5993 просмотра
Комментировать
Решения вопроса 1
При установке пакета своего приложение, пусть создается папка /var/log/your_apps с соответствующими разрешениями, в эту папку и складывайте логи.
по-моему путь для логов, в данном случае, белее чем очевиден.
Так поступают многие приложения.
Ответ написан более трёх лет назад
Нравится 3 10 комментариев
А если per-user логи?
если per-user, то при за пуске от юзера создавать(проверять наличие) папку ~/.your_apps, и писать все туда.
распространенная практика.
Спасибо, так и сделал.
Это плохая практика писать в домашнюю папку и вообще куда-либо из приложения «по-быстрому». Как я написал выше, есть большая вероятность что-то испортить (при банальном совпадении, например) и превысить квоты пользователя без его ведома. Лучший выход — ничего в файлы не писать, а все сообщения выводить в STDOUT, если другое не задано явно.
ЛАЙФХАК: Как создать ДЕЙСТВИТЕЛЬНО невидимую папку #Shorts
Хотя может я все слишком идеализирую, если ваша программа написана для 10-20 клиентов, но можно и не париться
В таком случае (ничего не писать), вообще плачевная ситуация сложится. Я считаю, правильнее сделать в программе уровень логов, и все-таки писать. Писать по дефолту в логи только критические ошибки, не думаю что при таком объеме реально превысить лимит на квоты в нынешнее время.
Так же в программе предусмотреть возможность переключения уровня логов, вплоть до debug, и возможность указания пути для логов. Далее уже прикрутить это все к logrotate. Но это все в идеале, мы же говорим о реальной ситуации, вероятнее всего и логи будут небольшие и клиентов ни так уж много.
Добавлю, что вместо ~/.your_app лучше использовать ~/.config/your_app
Вот, почему .config? Я видел это у хрома? и Вы знаете, этому браузеру я бы не стал доверять ибо в винде он хранит свои настройки в неположенном месте.
Чем аргументируете?
standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
Настройки — в $XDG_CONFIG_HOME, данные (в том числе и логи) — в $XDG_DATA_HOME
+1, срач в хомяке порядком надоедает.
z0rc, то что надо. Спасибо за ссылку!
Ответы на вопрос 5
Писать в syslog. #include
Ответ написан более трёх лет назад
Нравится 3 4 комментария
нет, приложение кроссплатформенное и использует кроссплатформенные же методы логирования
Ну так в винде че-нить другое воткните, типа журналирования средствами Вынды. То, что приложение кроссплатформеное не освобождает вас от обязанности делать все аккуратно и нативно для каждой платформы.
Зачем крутить костыли когда давно есть log4?
Приложение интенсивно пишущие в windows event log вызовет недоумение у одних и ненависть у других. Вряд ли, хоть кто-то это оценит с положительной стороны.
вот вы спросили как сделать правильно и ожидаемо для системы, а теперь рассказываете нам как в линуксе сделать неправильно. Вообще в топик-вопросе не было ни слова про кроссплатформенность. Я бы сделал в линуксе через сислог, и для винды, наверняка, есть прокладка-адаптер.
В линуксе принято, что расположение лог файла может задаваться пользователем, а стандартное расположение логов зависит от дистрибутива.
В разных дистрибутивах, когда пользователь устанавливает пакет через менеджер типа yum или apt-get, он делает это с правами рута и писать может только в свой файл, созданный менеджером. Поэтому лучший способ по умолчанию все логи, исполняемые файлы и т.д. — складывать в одну папку, но дать возможность все пути настраивать, чтобы ответственность брал на себя пользователь/менеджер пакетов, иначе у разных пользователей ваше приложение просто не будет работать
Ответ написан более трёх лет назад
Нравится 1 2 комментария
Ну вот смотрите, по меньшей мере есть стандартный(?) метод хранения данных приложения ~/.name
Я могу класть и сюда, но будет ли это ожидаемо?
Над пользовательским контролем путей приложения я не думал, честно говоря. Это хороший вариант, но всегда должны быть стандартные пути, чтобы пользователь, который не хочет заморачиваться просто установил приложение и не раздумывал над выбором путей.
В Линуксе пользователь вряд ли просто-так установит приложение, если вы или кто-то этого не предусмотрели. А если вы предусмотрели и собрали, например, rpm-пакет, чтобы пользователь сделал что-то вроде yum install . он сделает это с правами рута, и тогда проблемы создания файла /var/log/NAME не будет.
Проще было бы если бы вы сказали что за приложение и как планируете его распространять. Я так понимаю вы хотите написать какую-то програмку и с кем-то поделиться, тогда:
-Если пользователь будет его компилировать — делайте по умолчанию в той папке, откуда запущено. Опытные пользователи догадаются сделать это в /usr/local/ВАШЕПРИЛОЖЕНИЕ/logs/. а конкретные пути пускай настраивают, если захотят
-Если хотите чтобы пользователь сделал yum install ВАШЕПРИЛОЖЕНИЕ — то сборка пакета отдельная тема, если вам удастся собрать пакет вопрос где хранить логи к этому времени отпадет.
-А если это просто бинарник, который вы хотите переслать по почте чтобы кто-то просто запустил, то лучше по-умолчанию лог вообще отключить. чтобы кто-то нечаянно что-то не напортачил и не затер важный документ, сообщения выводить на стандартный вывод, а при необходимости что-то логировать пользователь пускай укажет это явно при вызове.
Источник: qna.habr.com
avhelp
Чтобы я смог вам помочь, вам необходимо сделать логи с помощью разных антивирусных программ.
Все программы, используемые для создания логов и лечения, необходимо запускать через правую кнопку мыши от имени администратора!
Скачайте программу AVZ, извлеките из архива и запустите. Обязательно обновите ее: «Файл» -> «Обновление баз».
Далее «Файл» -> «Стандартные скрипты» -> отметьте 2ой пункт. Нажмите «Выполнить отмеченные скрипты».
Будет выполнено автоматическое исследование системы, полученный лог будет сохранен в директории AVZ в папке LOG в архиве virusinfo_syscheck.zip.
Лог Farbar Recovery Scan Tool
запустите Farbar Recovery Scan Tool от имени администратора (через правую кнопку мыши выбрать соответствующий пункт), после запуска программы поставьте галку на «Drivers MD5» и нажмите «Scanning».
После окончания сканирования программа откроет два текстовых файла FRST.txt и Addition.txt (она находятся в папке с программой). Выложите содержимое этих двух файлов (или ссылку на загрузку) в комментариях с кратким изложением сути проблемы.
Лог HijackThis
Запустите ее. В появившемся окне с пользовательским соглашением нажмите на кнопку «I Accept». Нажмите на кнопку «Do a system scan and save a logfile». Сохраните лог. По умолчанию лог сохраняется в папке программы с именем hijackthis.log
После создания всех необходимых логов:
Полученные файлы с логами выложите на файлообменник и создайте сообщение, где кратко изложите суть проблемы и ссылку на логи.
Источник: avhelp.livejournal.com