package jef.common.log;
import java.io.IOException;
import java.io.PrintStream;
import jef.tools.StringUtils;
public class LogPrintStream extends PrintStream {
private boolean isErr;
private org.slf4j.Logger log;
PrintStream old;
public LogPrintStream(org.slf4j.Logger log,boolean isError,PrintStream old) {
super(old);
this.isErr=isError;
this.log=log;
this.old=old;
}
private boolean directOut(StackTraceElement[] stackTrace) {
String clz=stackTrace[1].getClassName();
if(clz.startsWith("org.")){
return true;
}
return false;
}
@Override
public void print(boolean flag) {
if(directOut(new Throwable().getStackTrace())){
old.print(flag);
return;
}
if(isErr){
log.error(String.valueOf(flag));
}else{
log.info(String.valueOf(flag));
}
}
@Override
public void print(char c) {
if(directOut(new Throwable().getStackTrace())){
old.print(c);
return;
}
if(isErr){
log.error(String.valueOf(c));
}else{
log.info(String.valueOf(c));
}
}
@Override
public void print(int i) {
if(directOut(new Throwable().getStackTrace())){
old.print(i);
return;
}
if(isErr){
log.error(String.valueOf(i));
}else{
log.info(String.valueOf(i));
}
}
@Override
public void print(long l) {
if(directOut(new Throwable().getStackTrace())){
old.print(l);
return;
}
if(isErr){
log.error(String.valueOf(l));
}else{
log.info(String.valueOf(l));
}
}
@Override
public void print(float f) {
if(directOut(new Throwable().getStackTrace())){
old.print(f);
return;
}
if(isErr){
log.error(String.valueOf(f));
}else{
log.info(String.valueOf(f));
}
}
@Override
public void print(double d) {
if(directOut(new Throwable().getStackTrace())){
old.print(d);
return;
}
if(isErr){
log.error(String.valueOf(d));
}else{
log.info(String.valueOf(d));
}
}
@Override
public void print(char[] ac) {
if(directOut(new Throwable().getStackTrace())){
old.print(ac);
return;
}
if(isErr){
log.error(new String(ac));
}else{
log.info(new String(ac));
}
}
@Override
public void print(String s) {
if(s==null)return;
if(directOut(new Throwable().getStackTrace())){
try {
old.write(s.getBytes());
} catch (IOException e) {
}
return;
}
if(isErr){
log.error(s);
}else{
log.info(s);
}
}
@Override
public void print(Object obj) {
if(directOut(new Throwable().getStackTrace())){
old.print(obj);
return;
}
if(isErr){
log.error(String.valueOf(obj));
}else{
log.info(String.valueOf(obj));
}
}
@Override
public void println(boolean flag) {
if(directOut(new Throwable().getStackTrace())){
old.println(flag);
return;
}
if(isErr){
log.error(String.valueOf(flag));
}else{
log.info(String.valueOf(flag));
}
}
@Override
public void println(char c) {
if(directOut(new Throwable().getStackTrace())){
old.println(c);
return;
}
if(isErr){
log.error(String.valueOf(c));
}else{
log.info(String.valueOf(c));
}
}
@Override
public void println(int i) {
if(directOut(new Throwable().getStackTrace())){
old.println(i);
return;
}
if(isErr){
log.error(String.valueOf(i));
}else{
log.info(String.valueOf(i));
}
}
@Override
public void println(long l) {
if(directOut(new Throwable().getStackTrace())){
old.println(l);
return;
}
if(isErr){
log.error(String.valueOf(l));
}else{
log.info(String.valueOf(l));
}
}
@Override
public void println(float f) {
if(directOut(new Throwable().getStackTrace())){
old.println(f);
return;
}
if(isErr){
log.error(String.valueOf(f));
}else{
log.info(String.valueOf(f));
}
}
@Override
public void println(double d) {
if(directOut(new Throwable().getStackTrace())){
old.println(d);
return;
}
if(isErr){
log.error(String.valueOf(d));
}else{
log.info(String.valueOf(d));
}
}
@Override
public void println(char[] ac) {
if(ac==null)return;
if(directOut(new Throwable().getStackTrace())){
old.println(ac);
return;
}
if(isErr){
log.error(new String(ac));
}else{
log.info(new String(ac));
}
}
@Override
public void println(String s) {
if(s==null)return;
if(directOut(new Throwable().getStackTrace())){
try {
old.write(s.getBytes());
} catch (IOException e) {
}
old.write(StringUtils.CR);
return;
}
if(isErr){
log.error(s);
}else{
log.info(s);
}
}
@Override
public void println(Object obj) {
if(directOut(new Throwable().getStackTrace())){
old.println(obj);
return;
}
if(isErr){
log.error(String.valueOf(obj));
}else{
log.info(String.valueOf(obj));
}
}
}