应用日志框架,只需对现有代码进行最少的更改

时间:2016-03-31 14:18:58

标签: java

我正在使用jar文件中的类的方法[print]。用于打印日志。现在我必须应用日志框架和项目所有文件使用jar文件方法来打印日志。如果不对所有文件进行更改,有没有办法做到这一点?我也无法改变jar文件类。提前谢谢。

1 个答案:

答案 0 :(得分:1)

假设你有一个class X,它在jar文件中,你无法改变,而且你有一堆

X.print("something");

遍及您的代码,因为该打印方法是static,在尝试覆盖它时继承X将不会获得任何东西(静态调用不使用继承;至少在Java中)。您需要找到所有要打印的调用,并使用您选择的日志记录方法替换它们。

然而,您可以从

中受益
public class Y extends X {
    // ADD constructors calling super(constructorArgs) here
    public static void print(String s) {
        // ADD use of logging framework here
    }
    // ADD all other static methods: call X.methodName(methodArgs);
    // all other dynamic methods: inheritance does it for you
}

然后,您可以将所有X替换为Y s(无需专门查找print的使用),事情应该可以正常工作。

相反,如果你有

 X x = new X(/* args here */);
 // ... and lots of these
 x.print("something");

然后该方法不是静态的,将new X形式的所有调用替换为new Y可以解决问题。您将更改大量文件,但每个文件都进行了非常小的更改。 Y课程中发生的所有变化都是print不再是static