LINUX.ORG.RU

Есть способ заставить rsyslog правильно парсить то что падает в /dev/log?

 , ,


0

1

Сделал маленький тест

package test;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.nio.ByteBuffer;
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
/**
 * <dependency>
 *     <groupId>com.github.jnr</groupId>
 *     <artifactId>jnr-unixsocket</artifactId>
 *     <version>0.20</version>
 * </dependency>
 */
import jnr.unixsocket.UnixDatagramChannel;
import jnr.unixsocket.UnixSocketAddress;

public class Main {

    public static void main(String[] args) throws IOException {
        DateTimeFormatter dtf = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
        String timestamp = OffsetDateTime.now().format(dtf);

        String message = "<14>1 " + timestamp + " myhost myapp 2 msgid test.Main: " + timestamp;

        ByteBuffer buf = ByteBuffer.wrap(message.getBytes("UTF-8"));
        UnixDatagramChannel channel = UnixDatagramChannel.open();
        channel.send(buf, new UnixSocketAddress("/dev/log"));

        DatagramSocket socket = new DatagramSocket();
        byte[] data = buf.array();
        socket.send(new DatagramPacket(data, data.length, InetAddress.getByName("localhost"), 514));
    }
}
В результате в /var/log/syslog
2018-12-15 22:37:44.536972 hostname [user.info] 1  2018-12-15T22:37:44.083+03:00 myhost myapp 2 msgid test.Main: 2018-12-15T22:37:44.083+03:00
2018-12-15 22:37:44.083 myhost [user.info] myapp[2]  test.Main: 2018-12-15T22:37:44.083+03:00

Т.е. то что влетело в УДП он распарсил, а то что упало в юникс-сокет не стал. ЧЗХ и как это поправить? Или это я не умею данные в сокет пихать?

★★★★★

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.