Skip to content

输出到服务器 1.3.1 +

log4a实现了TCPSocketAppender,开发者可以通过此追加器,与服务器建立TCP连接,并将日志实时传输到服务端。

TCPSocketAppender

FileAppender相同,同一个TCPSocketAppender也可以被绑定到多个不同的Logger实例,但是如果创建多个TCPSocketAppender,可能对应用性能造成影响,所以Log4a建议开发者在应用程序中只创建一个TCPSocketAppender实例并在多处复用。

用法

客户端

在客户端使用TCPSocketAppender,除追加器默认参数外,还需要提供远端服务器地址及端口:

ts
// ServerAppenderConstants.ets
import { TCPSocketAppender } from '@pie/log4a';

export const serverAppender = new TCPSocketAppender({
    address: '114.xxx.xxx.xxx', //换成你的服务器ip
    port: 1234, //换成你的服务器对应端口
    name: 'socket',
    level: Level.ALL
});

在需要绑定TCPSocketAppender的页面引入:

ts
import { LogManager } from '@pie/log4a';
import { serverAppender } from './ServerAppenderConstants.ets';

@Entry
@Component
struct Index {
    logger: Logger = LogManager.getLogger(this).addAppender(serverAppender);
    build() {
        // ...Your code
    }
}

服务端

服务端可以使用任何支持网络编程的语言进行处理,这里以nodejs为例:

js
const net = require('net');
var server = net.createServer();
server.on('connection', (socket) => {
        socket.on('data', (data) => {
                console.log(data.toString());
        })
});
server.listen(1234, '0.0.0.0', () => {
        console.log('server running on 0.0.0.0:1234');
});

服务端输出示意

server running on 0.0.0.0:4721
[INFO ]	2024-05-07 19:52:04.298	[Index:1]	Hello world!
[DEBUG]	2024-05-07 19:52:08.218	[Index:2]	log into file and console, 
{
  "_name": "ALL",
  "_intLevel": 1.7976931348623157e+308,
  "_standardLevel": {
    "_intLevel": 1.7976931348623157e+308
  }
}

以 Apache License 2.0 许可证发布