Search in sources :

Example 1 with LoggingRegistry

use of org.pentaho.di.core.logging.LoggingRegistry in project pentaho-kettle by pentaho.

the class TransGraph method dumpLoggingRegistry.

public void dumpLoggingRegistry() {
    LoggingRegistry registry = LoggingRegistry.getInstance();
    Map<String, LoggingObjectInterface> loggingMap = registry.getMap();
    for (LoggingObjectInterface loggingObject : loggingMap.values()) {
        System.out.println(loggingObject.getLogChannelId() + " - " + loggingObject.getObjectName() + " - " + loggingObject.getObjectType());
    }
}
Also used : LoggingRegistry(org.pentaho.di.core.logging.LoggingRegistry) LoggingObjectInterface(org.pentaho.di.core.logging.LoggingObjectInterface)

Example 2 with LoggingRegistry

use of org.pentaho.di.core.logging.LoggingRegistry in project pentaho-kettle by pentaho.

the class LogBrowser method installLogSniffer.

public void installLogSniffer() {
    // Create a new buffer appender to the log and capture that directly...
    // 
    final AtomicInteger lastLogId = new AtomicInteger(-1);
    final AtomicBoolean busy = new AtomicBoolean(false);
    final KettleLogLayout logLayout = new KettleLogLayout(true);
    final StyleRange normalLogLineStyle = new StyleRange();
    normalLogLineStyle.foreground = GUIResource.getInstance().getColorBlue();
    final StyleRange errorLogLineStyle = new StyleRange();
    errorLogLineStyle.foreground = GUIResource.getInstance().getColorRed();
    // Refresh the log every second or so
    // 
    final Timer logRefreshTimer = new Timer("log sniffer Timer");
    TimerTask timerTask = new TimerTask() {

        public void run() {
            if (text.isDisposed()) {
                return;
            }
            text.getDisplay().asyncExec(new Runnable() {

                public void run() {
                    HasLogChannelInterface provider = logProvider.getLogChannelProvider();
                    if (provider != null && !text.isDisposed() && !busy.get() && !paused.get() && text.isVisible()) {
                        busy.set(true);
                        LogChannelInterface logChannel = provider.getLogChannel();
                        String parentLogChannelId = logChannel.getLogChannelId();
                        LoggingRegistry registry = LoggingRegistry.getInstance();
                        Date registryModDate = registry.getLastModificationTime();
                        if (childIds == null || lastLogRegistryChange == null || registryModDate.compareTo(lastLogRegistryChange) > 0) {
                            lastLogRegistryChange = registry.getLastModificationTime();
                            childIds = LoggingRegistry.getInstance().getLogChannelChildren(parentLogChannelId);
                        }
                        // See if we need to log any lines...
                        // 
                        int lastNr = KettleLogStore.getLastBufferLineNr();
                        if (lastNr > lastLogId.get()) {
                            List<KettleLoggingEvent> logLines = KettleLogStore.getLogBufferFromTo(childIds, true, lastLogId.get(), lastNr);
                            // The maximum size of the log buffer
                            // 
                            int maxSize = Props.getInstance().getMaxNrLinesInLog() * 150;
                            synchronized (text) {
                                for (int i = 0; i < logLines.size(); i++) {
                                    KettleLoggingEvent event = logLines.get(i);
                                    String line = logLayout.format(event).trim();
                                    int start = text.getText().length();
                                    int length = line.length();
                                    if (length > 0) {
                                        Format format = TextFormatter.getInstance().execute(line);
                                        text.append(format.getText());
                                        text.append(Const.CR);
                                        for (StyleRange styleRange : format.getStyleRanges()) {
                                            styleRange.start += start;
                                            text.setStyleRange(styleRange);
                                        }
                                        if (event.getLevel() == LogLevel.ERROR) {
                                            StyleRange styleRange = new StyleRange();
                                            styleRange.foreground = GUIResource.getInstance().getColorRed();
                                            styleRange.start = start;
                                            styleRange.length = length;
                                            text.setStyleRange(styleRange);
                                        } else {
                                            StyleRange styleRange = new StyleRange();
                                            styleRange.foreground = GUIResource.getInstance().getColorBlue();
                                            styleRange.start = start;
                                            styleRange.length = Math.min(20, length);
                                            text.setStyleRange(styleRange);
                                        }
                                    }
                                }
                            }
                            // Erase it all in one go
                            // This makes it a bit more efficient
                            // 
                            int size = text.getText().length();
                            if (maxSize > 0 && size > maxSize) {
                                int dropIndex = (text.getText().indexOf(Const.CR, size - maxSize)) + Const.CR.length();
                                text.replaceTextRange(0, dropIndex, "");
                            }
                            text.setSelection(text.getText().length());
                            lastLogId.set(lastNr);
                        }
                        busy.set(false);
                    }
                }
            });
        }
    };
    // Refresh every often enough
    // 
    logRefreshTimer.schedule(timerTask, Const.toInt(EnvUtil.getSystemProperty(Const.KETTLE_LOG_TAB_REFRESH_DELAY), 1000), Const.toInt(EnvUtil.getSystemProperty(Const.KETTLE_LOG_TAB_REFRESH_PERIOD), 1000));
    text.addListener(SWT.MouseDown, e -> {
        try {
            int offset = text.getOffsetAtLocation(new Point(e.x, e.y));
            StyleRange style = text.getStyleRangeAtOffset(offset);
            if (style != null && style.underline && style.underlineStyle == SWT.UNDERLINE_LINK) {
                if (Desktop.isDesktopSupported()) {
                    Desktop.getDesktop().browse(new URI((String) style.data));
                }
            }
        } catch (Exception ex) {
        // no character under event.x, event.y
        }
    });
    // Make sure the timer goes down when the widget is disposed
    // 
    text.addDisposeListener(new DisposeListener() {

        public void widgetDisposed(DisposeEvent event) {
            logRefreshTimer.cancel();
        }
    });
    final Menu menu = new Menu(text);
    MenuItem item = new MenuItem(menu, SWT.NONE);
    item.setText(BaseMessages.getString(PKG, "LogBrowser.CopySelectionToClipboard.MenuItem"));
    item.addSelectionListener(new SelectionAdapter() {

        public void widgetSelected(SelectionEvent event) {
            String selection = text.getSelectionText();
            if (!Utils.isEmpty(selection)) {
                GUIResource.getInstance().toClipboard(selection);
            }
        }
    });
    text.setMenu(menu);
    text.addMouseListener(new MouseAdapter() {

        public void mouseDown(MouseEvent event) {
            if (event.button == 3) {
                ConstUI.displayMenu(menu, text);
            }
        }
    });
}
Also used : DisposeListener(org.eclipse.swt.events.DisposeListener) LoggingRegistry(org.pentaho.di.core.logging.LoggingRegistry) StyleRange(org.eclipse.swt.custom.StyleRange) HasLogChannelInterface(org.pentaho.di.core.logging.HasLogChannelInterface) DisposeEvent(org.eclipse.swt.events.DisposeEvent) URI(java.net.URI) Format(org.pentaho.di.ui.core.widget.text.Format) TimerTask(java.util.TimerTask) SelectionEvent(org.eclipse.swt.events.SelectionEvent) ArrayList(java.util.ArrayList) List(java.util.List) KettleLoggingEvent(org.pentaho.di.core.logging.KettleLoggingEvent) Menu(org.eclipse.swt.widgets.Menu) MouseEvent(org.eclipse.swt.events.MouseEvent) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) MouseAdapter(org.eclipse.swt.events.MouseAdapter) MenuItem(org.eclipse.swt.widgets.MenuItem) KettleLogLayout(org.pentaho.di.core.logging.KettleLogLayout) Point(org.eclipse.swt.graphics.Point) Date(java.util.Date) Point(org.eclipse.swt.graphics.Point) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) Timer(java.util.Timer) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) HasLogChannelInterface(org.pentaho.di.core.logging.HasLogChannelInterface) LogChannelInterface(org.pentaho.di.core.logging.LogChannelInterface)

Example 3 with LoggingRegistry

use of org.pentaho.di.core.logging.LoggingRegistry in project pdi-dataservice-server-plugin by pentaho.

the class DataServiceTestController method resetMetrics.

private void resetMetrics(LogChannelInterface logChannel) {
    LoggingRegistry loggingRegistry = LoggingRegistry.getInstance();
    MetricsRegistry metricsRegistry = MetricsRegistry.getInstance();
    if (logChannel != null) {
        for (String channelId : loggingRegistry.getLogChannelChildren(logChannel.getLogChannelId())) {
            metricsRegistry.getSnapshotLists().remove(channelId);
        }
    }
}
Also used : MetricsRegistry(org.pentaho.di.core.logging.MetricsRegistry) LoggingRegistry(org.pentaho.di.core.logging.LoggingRegistry) ValueMetaString(org.pentaho.di.core.row.value.ValueMetaString)

Aggregations

LoggingRegistry (org.pentaho.di.core.logging.LoggingRegistry)3 URI (java.net.URI)1 ArrayList (java.util.ArrayList)1 Date (java.util.Date)1 List (java.util.List)1 Timer (java.util.Timer)1 TimerTask (java.util.TimerTask)1 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)1 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)1 StyleRange (org.eclipse.swt.custom.StyleRange)1 DisposeEvent (org.eclipse.swt.events.DisposeEvent)1 DisposeListener (org.eclipse.swt.events.DisposeListener)1 MouseAdapter (org.eclipse.swt.events.MouseAdapter)1 MouseEvent (org.eclipse.swt.events.MouseEvent)1 SelectionAdapter (org.eclipse.swt.events.SelectionAdapter)1 SelectionEvent (org.eclipse.swt.events.SelectionEvent)1 Point (org.eclipse.swt.graphics.Point)1 Menu (org.eclipse.swt.widgets.Menu)1 MenuItem (org.eclipse.swt.widgets.MenuItem)1 HasLogChannelInterface (org.pentaho.di.core.logging.HasLogChannelInterface)1