LINUX.ORG.RU

История изменений

Исправление liksys, (текущая версия) :

Ну этого как раз и надо добиться.

Зачем?

Да, но зачем было пихать это на rw-десктоп?

Затем, что это единая кодовая база и хранилища управляются единообразно и стандартно, независимо от инсталляции и дистрибутива. Например, я могу указать, что хочу, чтобы всё лежало в памяти и занимало не больше 64 мегабайт - и журнал будет подчищать старые записи. Причем не костылями а-ля logrotate, а по-нормальному. Или сделать то же самое, но для дискового хранилища. И всё, что мне требуется - заменить одну строчку в конфиге.

А еще я на некоторых ноутбуках делаю логгирование в память, чтобы не насиловать nvme лишними записями. Тоже очень удобно.

open-wrt

У них свой собственный мир и своя сложившаяся экосистема, с которой они живут уже очень давно. Это вообще не показатель. Они может быть и перешли бы, но для этого им придется разломать всю ось и поиметь огромный геморрой с совместимостью. Проще продолжать делать, как делали.

Может пропустить вредную промежуточную стадию сразу приступить к чтению лога демона?

Читай логи напрямую с диска глазами, пропусти вредную промежуточную стадию less.

И что странно, это тоже делается без журналда проще, чем с журналдом.

Точно? Точно-точно? А если я код принесу?

class LogReader:
    async def poll_log(self, seek: int, follow: bool) -> AsyncGenerator[dict, None]:
        reader = systemd.journal.Reader()
        reader.this_boot()
        reader.log_level(systemd.journal.LOG_DEBUG)

        services = set(
            service
            for service in systemd.journal.Reader().query_unique("_SYSTEMD_UNIT")
            if re.match(r"myservice(-\w+)*\.service", service)
        )

        for service in services:
            reader.add_match(_SYSTEMD_UNIT=service)
        if seek > 0:
            reader.seek_realtime(float(time.time() - seek))

        for entry in reader:
            yield self.__entry_to_record(entry)

        while follow:
            entry = reader.get_next()
            if entry:
                yield self.__entry_to_record(entry)
            else:
                await asyncio.sleep(1)

    def __entry_to_record(self, entry: dict) -> dict[str, dict]:
        return {
            "dt": entry["__REALTIME_TIMESTAMP"],
            "service": entry["_SYSTEMD_UNIT"],
            "msg": entry["MESSAGE"].rstrip(),
        }

Куда уж проще.

Исправление liksys, :

Ну этого как раз и надо добиться.

Зачем?

Да, но зачем было пихать это на rw-десктоп?

Затем, что это единая кодовая база и хранилища управляются единообразно и стандартно, независимо от инсталляции и дистрибутива. Например, я могу указать, что хочу, чтобы всё лежало в памяти и занимало не больше 64 мегабайт - и журнал будет подчищать старые записи. Причем не костылями а-ля logrotate, а по-нормальному. Или сделать то же самое, но для дискового хранилища. И всё, что мне требуется - заменить одну строчку в конфиге.

А еще я на некоторых ноутбуках делаю логгирование в память, чтобы не насиловать nvme лишними записями. Тоже очень удобно.

open-wrt

У них свой собственный мир и своя сложившаяся экосистема, с которой они живут уже очень давно. Это вообще не показатель. Они может быть и перешли бы, но для этого им придется разломать всю ось и поиметь огромный геморрой с совместимостью. Проще продолжать делать, как делали.

Может пропустить вредную промежуточную стадию сразу приступить к чтению лога демона?

Читай логи напрямую с диска глазами, пропусти вредную промежуточную стадию less.

И что странно, это тоже делается без журналда проще, чем с журналдом.

Точно? Точно-точно? А если я код принесу?

class LogReader:
    async def poll_log(self, seek: int, follow: bool) -> AsyncGenerator[dict, None]:
        reader = systemd.journal.Reader()
        reader.this_boot()
        reader.log_level(systemd.journal.LOG_DEBUG)

        services = set(
            service
            for service in systemd.journal.Reader().query_unique("_SYSTEMD_UNIT")
            if re.match(r"myservice(-\w+)*\.service", service)
        ).union(["kvmd.service"])

        for service in services:
            reader.add_match(_SYSTEMD_UNIT=service)
        if seek > 0:
            reader.seek_realtime(float(time.time() - seek))

        for entry in reader:
            yield self.__entry_to_record(entry)

        while follow:
            entry = reader.get_next()
            if entry:
                yield self.__entry_to_record(entry)
            else:
                await asyncio.sleep(1)

    def __entry_to_record(self, entry: dict) -> dict[str, dict]:
        return {
            "dt": entry["__REALTIME_TIMESTAMP"],
            "service": entry["_SYSTEMD_UNIT"],
            "msg": entry["MESSAGE"].rstrip(),
        }

Куда уж проще.

Исправление liksys, :

Ну этого как раз и надо добиться.

Зачем?

Да, но зачем было пихать это на rw-десктоп?

Затем, что это единая кодовая база и хранилища управляются единообразно и стандартно, независимо от инсталляции и дистрибутива. Например, я могу указать, что хочу, чтобы всё лежало в памяти и занимало не больше 64 мегабайт - и журнал будет подчищать старые записи. Причем не костылями а-ля logrotate, а по-нормальному. Или сделать то же самое, но для дискового хранилища. И всё, что мне требуется - заменить одну строчку в конфиге.

А еще я на некоторых ноутбуках делаю логгирование в память, чтобы не насиловать nvme лишними записями. Тоже очень удобно.

open-wrt

У них свой собственный мир и своя сложившаяся экосистема, с которой они живут уже очень давно. Это вообще не показатель. Они может быть и перешли бы, но для этого им придется разломать всю ось и поиметь огромный геморрой с совместимостью. Проще продолжать делать, как делали.

Может пропустить вредную промежуточную стадию сразу приступить к чтению лога демона?

Читай логи напрямую с диска глазами, пропусти вредную промежуточную стадию less.

И что странно, это тоже делается без журналда проще, чем с журналдом.

Точно? Точно-точно? А если я код принесу?

    async def poll_log(self, seek: int, follow: bool) -> AsyncGenerator[dict, None]:
        reader = systemd.journal.Reader()
        reader.this_boot()
        reader.log_level(systemd.journal.LOG_DEBUG)

        services = set(
            service
            for service in systemd.journal.Reader().query_unique("_SYSTEMD_UNIT")
            if re.match(r"myservice(-\w+)*\.service", service)
        ).union(["kvmd.service"])

        for service in services:
            reader.add_match(_SYSTEMD_UNIT=service)
        if seek > 0:
            reader.seek_realtime(float(time.time() - seek))

        for entry in reader:
            yield self.__entry_to_record(entry)

        while follow:
            entry = reader.get_next()
            if entry:
                yield self.__entry_to_record(entry)
            else:
                await asyncio.sleep(1)

Куда уж проще.

Исправление liksys, :

Ну этого как раз и надо добиться.

Зачем?

Да, но зачем было пихать это на rw-десктоп?

Затем, что это единая кодовая база и хранилища управляются единообразно и стандартно, независимо от инсталляции и дистрибутива. Например, я могу указать, что хочу, чтобы всё лежало в памяти и занимало не больше 64 мегабайт - и журнал будет подчищать старые записи. Причем не костылями а-ля logrotate, а по-нормальному. Или сделать то же самое, но для дискового хранилища. И всё, что мне требуется - заменить одну строчку в конфиге.

А еще я на некоторых ноутбуках делаю логгирование в память, чтобы не насиловать nvme лишними записями. Тоже очень удобно.

open-wrt

У них свой собственный мир и своя сложившаяся экосистема, с которой они живут уже очень давно. Это вообще не показатель. Они может быть и перешли бы, но для этого им придется разломать всю ось и поиметь огромный геморрой с совместимостью. Проще продолжать делать, как делали.

Может пропустить вредную промежуточную стадию сразу приступить к чтению лога демона?

Читай логи напрямую с диска глазами, пропусти вредную промежуточную стадию less.

Исходная версия liksys, :

Ну этого как раз и надо добиться.

Зачем?

Да, но зачем было пихать это на rw-десктоп?

Затем, что это единая кодовая база и хранилища управляются единообразно и стандартно, независимо от инсталляции и дистрибутива. Например, я могу указать, что хочу, чтобы всё лежало в памяти и занимало не больше 64 мегабайт - и журнал будет подчищать старые записи. Причем не костылями а-ля logrotate, а по-нормальному. Или сделать то же самое, но для дискового хранилища. И всё, что мне требуется - заменить одну строчку в конфиге.

А еще я на некоторых ноутбуках делаю логгирование в память, чтобы не насиловать nvme лишними записями. Тоже очень удобно.

open-wrt

У них свой собственный мир и своя сложившаяся экосистема, с которой они живут уже очень давно. Это вообще не показатель. Они может бы и перешли, но для этого им придется разломать всю ось и поиметь огромный геморрой с совместимостью. Проще продолжать делать, как делали.

Может пропустить вредную промежуточную стадию сразу приступить к чтению лога демона?

Читай логи напрямую с диска глазами, пропусти вредную промежуточную стадию less.