public void doAnalysis(LogData.Builder builder, Message extraLog) {
        if (StringUtil.isEmpty(builder.getService())) {
            // If the service name is empty, the log will be ignored.
            log.debug("The log is ignored because the Service name is empty");
            return;
        }
        Layer layer;
        if ("".equals(builder.getLayer())) {
            layer = Layer.GENERAL;
        } else {
            try {
                layer = Layer.nameOf(builder.getLayer());
            } catch (UnexpectedException e) {
                log.warn("The Layer {} is not found, abandon the log.", builder.getLayer());
                return;
            }
        }

        createAnalysisListeners(layer);
        if (builder.getTimestamp() == 0) {
            // If no timestamp, OAP server would use the received timestamp as log's timestamp
            builder.setTimestamp(System.currentTimeMillis());
        }

        notifyAnalysisListener(builder, extraLog);
        notifyAnalysisListenerToBuild();
    }
Analyze the collected log data, is the entry point for log analysis.
oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/provider/log/LogAnalyzer.java