Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
нагружать будетА логи чем не устраивают? Ну тогда можешь читать текущий файл логов каждые N секунд/минут и отправлять куда тебе надо.
Если читать каждую 0,1 секунду, то конечно будет. Другие варианты вряд ли есть.нагружать будет
// Класс.
public class ConsoleFilter implements Filter {
@Override
public boolean isLoggable(LogRecord record) {
// Тут ты читаешь сообщения.
record.getMessage();
// Или даже меняешь его.
record.setMessage("СТРОКА");
return true; // false - строка не будет записана в лог.
}
}
// Подключаем всё это дело.
ConsoleFilter console_filter = new ConsoleFilter();
this.getLogger().setFilter(console_filter);
Bukkit.getLogger().setFilter(console_filter);
Logger.getLogger("Minecraft").setFilter(console_filter)
org.apache.logging.log4j.Logger rootLogger = org.apache.logging.log4j.LogManager.getRootLogger();
if (rootLogger instanceof org.apache.logging.log4j.core.Logger) {
((org.apache.logging.log4j.core.Logger) rootLogger).addFilter(filter);
}
StreamHandler streamHandler = new StreamHandler() {
@Override
// Подходит для отмены или изменения сообщений
public boolean isLoggable(LogRecord record) {
String msg = record.getMessage();
boolean cancelMessage = false;
record.setMessage("StreamHandler.isLoggable(): " + msg);
return !cancelMessage;
}
@Override
// Подходит для получения сообщений, которые не были отменены
public void publish(LogRecord record) {
String msg = record.getMessage();
record.setMessage("StreamHandler.publish(): " + msg);
super.publish(record);
}
};
for (Logger logger : loggers) {
logger.addHandler(streamHandler);
}
for (Logger logger : loggers) {
Filter previousFilter = logger.getFilter();
logger.setFilter(new Filter() {
@Override
// Подходит для отмены или изменения сообщений
public boolean isLoggable(LogRecord record) {
String msg = record.getMessage();
boolean cancelMessage = false;
record.setMessage("Filter.isLoggable(): " + msg);
if (cancelMessage) return false;
return previousFilter == null || previousFilter.isLoggable(record);
}
});
}
private static List<Logger> getAllLoggers() {
List<Logger> result = new ArrayList<>();
result.add(Logger.getGlobal());
result.add(Logger.getLogger("Minecraft"));
result.add(Bukkit.getServer().getLogger());
for (Plugin plugin : Bukkit.getServer().getPluginManager().getPlugins()) {
result.add(plugin.getLogger());
}
return result;
}