1. bash / Говнокод #19664

    −53

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    set +x
    for file in ./*.{status,addr2Line,sysctlLog,procLog}
    do
        if [ -f "./$file" ]
        then
    	    echo -e "\n\n \e[1m### Failure info: \e[34m$file\e[0m\e[1m ###\e[0m"
            cat ./$file | sed -e 's/^host: \(.*\)/host: \x1b[1m\x1b[44m\1\x1b[0m/' \
                              -e 's/^\(.*PANIC:\)/\x1b[1m\x1b[31m\1/' \
                              -e 's/^\(.*Use the following command for more stack info:\)/\x1b[0m\1/'
        fi
    done

    Почти Malbolge

    Запостил: wvxvw, 20 Марта 2016

    Комментарии (18) RSS

    • ну это же искейп последовательности для терминала
      ты что, "termcap & terminfo" не читал?
      Ответить
      • Я как-бы автор этого кода.
        Что как бы не отменяет говнистости. Код какбы предназначается для раскраски логов Дженкинса. Потому что у этой замечательной Ява-программы столько опупенных возможностей красиво отформатировать лог. (Ну можно, конечно плагин написать, но проебаться неделю с плагином, или потратить полчаса на sed - оно того не стоит).
        Ответить
        • Не понимаю причем тут дженкинс
          Ты получаешь от него какой-то лог, красишь слово "PANIC" в красное посредством эск-последовательностей, и эти последовательности тебе не нравятся. Ну это вопрос к DEC, они придумали эти последовательности.

          А если бы это был не ява-программа Дженкнис, а си программа apache, тебе легче было бы чтоли красить лог?

          Вообще скажи спасибо что консоличка в юниксе понимает эск последовательности
          Потому что в винде, например, не понимает
          Нужен Console API
          Ответить
          • Ну вот как бы и не угадал. Красится не слово PANIC, а стектрейс который начинается в строке со словом PANIC, и заканчивается в строке со словами "Use the following ...". Ну и не просто в красный а п/ж красный. Кроме этого слово следующее за host: подсвечивается синим.

            Но без того, чтобы запустить этот код с подходящим вводом понять что именно он делает сложно.

            Дженкинс тут при том, что нужно как-то работать с тем, что он выводит в лог, т.как если сборка или тесты зафейлились, или во время тестов / сборки были какие-то важные сообщения, то их нужно найти, выделить, сделать удобным для людей их читающих навигацию к коду который эти сообщения выдал и т.д. Но при том что Дженкинс - это огромная программа, которая делает очень простую вещь, таких жизненно необходимых вещей в нем нет, и более простой способ их прикрутить - это какая-то возня с ВТ100 кодами, вместо высокоуровневого АПИ.
            Ответить
            • > вместо высокоуровневого АПИ
              Наверняка можно писать логи в каком-нибудь XML, который можно потом раскрасить и отформатировать как угодно XSLT-преобразованием, или просто тупо написать кастомный JUL log-record форматтер.
              Ответить
              • Наверняка: ога, можно, только это работы на месяц, и нет, Женкинс не умеет это просто так, нужно плагин самому писать и т.д. Вообще при поразительно невьебенном объеме кода Женкинс умеет делать очень мало. И даже то, что "умеет" делает через жопу. Одна только отправка сообщений об ошибках в запросах чего стоит.

                grcat немножнко улучшит этот код, но фактически ничего не изменится. Мне не важно, чтобы лог был какого-то определенного цвета. Мне важно, чтобы его можно было найти. Т.е. в идеале, я бы изначально подготовил лог, например, записав в него такую необычную информацию как info/debug/error/warn, а уж женкинс бы это подсветил / спрятал / показал / послал по почте и т.д.
                Ответить
                • > только это работы на месяц

                  Я не специалист в женкинсах, но вроде тут
                  https://wiki.jenkins-ci.org/display/JENKINS/Logging
                  написано, что можно наваять пару строк на груви и добавить какой угодно хэндлер, включая встроенный xml-логгер из стандартной библиотеки
                  http://docs.oracle.com/javase/6/docs/api/java/util/logging/XMLFormatter.html
                  Ответить
                  • Это вообще не тот лог. Это лог не джобов, а самого дженкинса.
                    Ответить
                  • >>Я не
                    а на чем в Яше CI?
                    Ответить
              • И да, я знаю об этом: https://wiki.jenkins-ci.org/display/JENKINS/Log+Parser+Plugin
                Но оно работает построчно (т.е. если выделение со строки х по строку у, то уже облом).
                Ответить
            • Ну так ведь это же юниксовая идеология: все логи в файлах)

              Не нравится тебе возня с кодами? Бери писточник или перл, там можно это превратить в нормальную структуру данных, и раскрасить оттуда же через ncurses

              Сделаешь утилиту, опубликуешь ее на гитхабе, будешь молодец
              Ответить
              • >>Ну так ведь это же юниксовая идеология: все логи в файлах)
                journald только что насрал тебе за шыворот
                Ответить
                • Срущее говно - это какие-то функции высшего порядка.
                  Ответить
                  • Quine.
                    Ответить
                  • ты противник systemd?

                    лучше расслабься и получай удовольствие
                    скоро он будет везде
                    Ответить
        • Открой для себя grcat, там реюзабельные конфиги можно писать без всяких эскейп-последовательностей.

          Да и sed-ом можно чуть более читабельно через tput выставлять.
          Ответить
    • а че обратные слеши одинарные в двойных-то кавычках? - сразу в глаза бросается ошибка
      Ответить
      • >> обратные слеши

        Это что, когда баба с бабой?
        Ответить

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