Перейти к содержимому


Фотография

Программа для просмотра чата

Просмотр логов Minecraft Minecraft log viewer chat viewer

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 12

#1 avttrue

avttrue

    Добытчик камня

  • Шерифы сервера
  • Сообщений: 253
  • Ник в Minecraft:
    Chapaev
  • Откуда: Обираловка

Написал 20.11.2014 - 10:24

Полезно будет в основном тем, кто играет на серверах.

 

Короче говоря.

Было у меня немного времени и я решил написать программку для просмотра логов Майнкрафта. В эти самые логи пишется в том числе и чат. Так что теперь есть у вас (нас) возможность вспомнить о чём трепались в чате год-два назад. Если, конечно, не переустанавливали Майнкрафт с тех пор.

 

Вот ссылка на саму программку: https://yadi.sk/d/hjxpj1ZecpVk2

исходники: https://yadi.sk/d/xqL1sBfacoX3a

 

 

Программа "Просмотр логов Minecraft" будет полезна прежде всего для тех, кто предпочитает игру по сети, ибо в логи пишется игровой чат.

Minecraft пишет все свои логи по адресу  %appdata%.minecraftlogsПоследний лог записан в файле latest.log, предыдущие заархивированы в формате gz и находятся рядом.

Для работы с программой нужно:* указать каталог установки Minecraft (по умолчанию это %appdata%.minecraft)* указать фильтры (наличие фильтров заметно ускоряет обработку логов, особенно когда их много)* нажать кнопку с пиктограммой молотка* дождаться окончания обработки логов

Как работают фильтрыФильтров всего два:* что обязательно должно присутствовать в строке лога. Условия накладываются опционально - либо И, либо ИЛИ.* что не должно присутствовать в строке лога. Условия накладываются по принципу И.

Если объём логов велик, то правильнее будет сохранить результат работы программы в текстовый файл (кнопка с пиктограммой дискеты) и открыть его более мощным текстовым редактором.

Системные требования:Microsoft .NET Framework 4.5(http://www.microsoft...s.aspx?id=30653)


Сообщение отредактировал avttrue: 05.12.2014 - 08:37

  • Поблагодарили: rumickon, pailser и Valan

#2 avttrue

avttrue

    Добытчик камня

  • Шерифы сервера
  • Сообщений: 253
  • Ник в Minecraft:
    Chapaev
  • Откуда: Обираловка

Написал 21.11.2014 - 09:40

По просьбам трудящихся добавил опциональную запись сразу в файл.



#3 avttrue

avttrue

    Добытчик камня

  • Шерифы сервера
  • Сообщений: 253
  • Ник в Minecraft:
    Chapaev
  • Откуда: Обираловка

Написал 22.11.2014 - 20:17

Ну и внёс, надеюсь, последние изменения, исправил ошибочки.



#4 _random

_random

    Добытчик дерева

  • Пользователи
  • Сообщений: 151

Написал 22.11.2014 - 21:45

#!/bin/bashregexp='/[CHAT]/!d'logs_dir=~/.minecraft/logsfor filename in $(find $logs_dir -name "*.gz" -type f | sort); do    date=$(echo $filename | sed -e 's/.*/(.*)-.*/1/')    zcat $filename | sed -e $regexp -e "s/^/[$date] /"donedate=$(date +"%Y-%m-%d")cat $logs_dir/latest.log | sed -e $regexp -e "s/^/[$date] /"

Упрощенный аналог для линуксов.


Сообщение отредактировал _random: 22.11.2014 - 21:46

  • Поблагодарили: rumickon и avttrue

#5 avttrue

avttrue

    Добытчик камня

  • Шерифы сервера
  • Сообщений: 253
  • Ник в Minecraft:
    Chapaev
  • Откуда: Обираловка

Написал 22.11.2014 - 22:28

Работает? Могу в архив sh-ник доложить для комплектности?



#6 vasco

vasco

    торговец черным деревом на пенсии

  • Администраторы
  • Сообщений: 1784

Написал 23.11.2014 - 08:38

Подвисает при растягивании окна. Также при сканировании логов желательно выносить это в отдельный поток, а в интерфейс тогда можно будет добавить кнопку отмены.

Еще кнопка открытия каталога замыкается на .Roaming, хотелось бы иметь возможность выбрать произвольную папку, чтобы можно было обработать (попробовать) баккитовские логи.


  • Поблагодарил: avttrue

#7 _random

_random

    Добытчик дерева

  • Пользователи
  • Сообщений: 151

Написал 23.11.2014 - 09:02

Работает вроде бы. Но вчера я написал немного неправильно - для latest.log писалась текущая дата, а не дата последнего изменения.

#!/bin/bashregexp='/[CHAT]/!d'logs_dir=~/.minecraft/logscat /dev/null > chat.logfor filename in $(find $logs_dir -name "*.gz" -type f | sort); do    date=$(echo $filename | sed -e 's/.*/(.*)-.*/1/')    zcat $filename | sed -e $regexp -e "s/^/[$date] /" >> chat.logdoneif [ -f $logs_dir/latest.log ]; then    date=$(printf "%(%Y-%m-%d)T" $(stat -c %Y $logs_dir/latest.log))    cat $logs_dir/latest.log | sed -e $regexp -e "s/^/[$date] /" >> chat.logfi

Такой вариант должен быть удобнее. В отличие от первого варианта, выводит результат не в консоль, а в файл chat.log. То есть можно запускать не из консольки, а мышкой с рабочего стола. Конечно, этот скрипт можно положить в отдельный файл.Кстати, скрипт не обязательно должен иметь расширение sh. О том что это исполняемый файл, показывают аттрибуты файла (chmod +x), а какой интерпретатор использовать - строка #!/bin/bash

Но толку то. Много ли на форуме людей, постоянно пользующихся линуксом? Даже я линуксом не пользуюсь. Этот скрипт я написал для того, чтобы показать, что логи удобно обрабатывать программами grep и sed, которые есть и для виндовса: http://gnuwin32.sourceforge.net Хотя, конечно, не все умеют пользоваться консольными программами.


Сообщение отредактировал _random: 23.11.2014 - 09:05

  • Поблагодарили: rumickon и avttrue

#8 avttrue

avttrue

    Добытчик камня

  • Шерифы сервера
  • Сообщений: 253
  • Ник в Minecraft:
    Chapaev
  • Откуда: Обираловка

Написал 23.11.2014 - 11:57

Подвисает при растягивании окна. Также при сканировании логов желательно выносить это в отдельный поток, а в интерфейс тогда можно будет добавить кнопку отмены.

Еще кнопка открытия каталога замыкается на .Roaming, хотелось бы иметь возможность выбрать произвольную папку, чтобы можно было обработать (попробовать) баккитовские логи.

- Подвисает при растягивании окна. Также при сканировании логов желательно выносить это в отдельный поток, а в интерфейс тогда можно будет добавить кнопку отмены.Это да. Нужно разводить потоки. Но я в последний раз писал лет этак семь назад, забыл как с потоками работать, буду вспоминать :)- Еще кнопка открытия каталога замыкается на .RoamingИсправлю на днях. 



#9 vasco

vasco

    торговец черным деревом на пенсии

  • Администраторы
  • Сообщений: 1784

Написал 23.11.2014 - 13:01

с .net не работал никогда, на яве все достаточно просто через Runnable делается или через Thread



#10 avttrue

avttrue

    Добытчик камня

  • Шерифы сервера
  • Сообщений: 253
  • Ник в Minecraft:
    Chapaev
  • Откуда: Обираловка

Написал 23.11.2014 - 13:04

Добавил возможность выбора папки начиная  с "Моего Компьютера".

Выяснилось попутно, что стандартный элемент управления для выбора папки в VS не позволяет переходить в системные, так что пришлось пока добавить менюшку кнопке "папка".


Сообщение отредактировал avttrue: 23.11.2014 - 15:30


#11 avttrue

avttrue

    Добытчик камня

  • Шерифы сервера
  • Сообщений: 253
  • Ник в Minecraft:
    Chapaev
  • Откуда: Обираловка

Написал 28.11.2014 - 17:43

Исправил всякие мелкие ляпы.



#12 avttrue

avttrue

    Добытчик камня

  • Шерифы сервера
  • Сообщений: 253
  • Ник в Minecraft:
    Chapaev
  • Откуда: Обираловка

Написал 01.12.2014 - 16:30

- Ускорил обработку файлов

- Улучшил фильтрование



#13 avttrue

avttrue

    Добытчик камня

  • Шерифы сервера
  • Сообщений: 253
  • Ник в Minecraft:
    Chapaev
  • Откуда: Обираловка

Написал 04.01.2015 - 14:10

По заявкам немногочисленных пользователей добавил сбор и обработку имён участников чата.




Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных