可以的,Java 里的 Logger(通常指 java.util.logging.Logger 或像 Log4j / Logback 这类日志框架)本身不直接“发消息”,但可以通过配置 Handler / Appender 实现远程发送日志。
下面按常见情况说一下:
JUL 自带:
SocketHandler:通过 TCP Socket 发送日志到远程XMLFormatter:通常配合 SocketHandler 使用Logger logger = Logger.getLogger("remote");
logger.setUseParentHandlers(false);
SocketHandler handler = new SocketHandler("192.168.1.100", 5000);
handler.setFormatter(new XMLFormatter());
logger.addHandler(handler);
logger.info("hello remote log");
⚠️ 需要远程有一个 Socket 日志接收服务(自己写或用工具)。
Log4j2 支持多种远程方式:
<Socket name="Socket" host="192.168.1.100" port="5000">
<PatternLayout pattern="%m%n"/>
</Socket>
<Kafka name="Kafka" topic="logs">
<PatternLayout pattern="%m"/>
<Property name="bootstrap.servers">kafka:9092</Property>
</Kafka>
HttpAppender<appender name="SOCKET" class="ch.qos.logback.classic.net.SocketAppender">
<remoteHost>192.168.1.100</remoteHost>
<port>5000</port>
<reconnectionDelay>10000</reconnectionDelay>
</appender>
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>logstash:5000</destination>
</appender>
| 方式 | 协议 | 典型用途 |
|---|---|---|
| Socket | TCP | 简单远程 |
| Syslog | UDP/TCP | 运维 |
| Kafka | TCP | 高并发 |
| HTTP | HTTP | 云服务 |
| ELK | TCP | 日志分析 |
如果你告诉我:
我可以直接给你一份可用配置。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。