// 
// Decompiled by Procyon v0.6.0
// 

package io.sentry;

import java.io.Writer;
import java.io.PrintWriter;
import java.io.StringWriter;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.NotNull;

public final class SystemOutLogger implements ILogger
{
    @Override
    public void log(@NotNull final SentryLevel level, @NotNull final String message, @Nullable final Object... args) {
        System.out.println(String.format("%s: %s", level, String.format(message, args)));
    }
    
    @Override
    public void log(@NotNull final SentryLevel level, @NotNull final String message, @Nullable final Throwable throwable) {
        if (throwable == null) {
            this.log(level, message, new Object[0]);
        }
        else {
            System.out.println(String.format("%s: %s\n%s", level, String.format(message, throwable.toString()), this.captureStackTrace(throwable)));
        }
    }
    
    @Override
    public void log(@NotNull final SentryLevel level, @Nullable final Throwable throwable, @NotNull final String message, @Nullable final Object... args) {
        if (throwable == null) {
            this.log(level, message, args);
        }
        else {
            System.out.println(String.format("%s: %s \n %s\n%s", level, String.format(message, args), throwable.toString(), this.captureStackTrace(throwable)));
        }
    }
    
    @Override
    public boolean isEnabled(@Nullable final SentryLevel level) {
        return true;
    }
    
    @NotNull
    private String captureStackTrace(@NotNull final Throwable throwable) {
        final StringWriter stringWriter = new StringWriter();
        final PrintWriter printWriter = new PrintWriter(stringWriter);
        throwable.printStackTrace(printWriter);
        return stringWriter.toString();
    }
}
