@Override
    public LogSinkListener parse(final LogData.Builder logData,
                                     final Message extraLog) {
        Layer layer;
        if (StringUtil.isNotEmpty(logData.getLayer())) {
            layer = Layer.valueOf(logData.getLayer());
        } else {
            layer = Layer.GENERAL;
        }
        final long timeBucket = TimeBucket.getTimeBucket(System.currentTimeMillis(), DownSampling.Minute);
        // to service traffic
        String serviceName = namingControl.formatServiceName(logData.getService());
        String serviceId = IDManager.ServiceID.buildId(serviceName, layer.isNormal());
        serviceMeta = new ServiceMeta();
        serviceMeta.setName(namingControl.formatServiceName(logData.getService()));
        serviceMeta.setLayer(layer);
        serviceMeta.setTimeBucket(timeBucket);
        // to service instance traffic
        if (StringUtil.isNotEmpty(logData.getServiceInstance())) {
            instanceMeta = new ServiceInstanceUpdate();
            instanceMeta.setServiceId(serviceId);
            instanceMeta.setName(namingControl.formatInstanceName(logData.getServiceInstance()));
            instanceMeta.setTimeBucket(timeBucket);

        }
        // to endpoint traffic
        if (StringUtil.isNotEmpty(logData.getEndpoint())) {
            endpointMeta = new EndpointMeta();
            endpointMeta.setServiceName(serviceName);
            endpointMeta.setServiceNormal(true);
            endpointMeta.setEndpoint(namingControl.formatEndpointName(serviceName, logData.getEndpoint()));
            endpointMeta.setTimeBucket(timeBucket);
        }
        return this;
    }
Generate service, service instance and endpoint traffic by log data.
oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/provider/log/listener/TrafficSinkListener.java