On 1/12/2017 11:15 AM, Man Cao wrote:
Thanks David for the quick response!

Yes, I understand completely removing defaultStream and tty is probably infeasible.

If deprecating the diagnostic options (LogVMOutput, LogFile, DisplayVMOutput) is the intent, could someone create a bug/RFE to track it? They should probably first be added to the special_jvm_flags table

I think there is too much yet to be done in the conversion process to file such a RFE - to be frank we don't have active RFE's for the remaining conversions, rather they are being tackled case by case when people are working in the area.

in arguments.cpp, so there will be a warning when people use them. The case of conflicting -Xlog::file=test.log and -XX:LogFile=test.log is also a concern, the JVM should at least issue a warning about it. In addition, it would make it easier for us to convince production teams to stop using these options.

I have filed:

https://bugs.openjdk.java.net/browse/JDK-8193117

JDK-8193117 Issue a warning if legacy logging and Unified Logging are told to use the same file

Cheers,
David
-----

Thanks,
Man

On Thu, Nov 30, 2017 at 4:48 PM, David Holmes <david.hol...@oracle.com <mailto:david.hol...@oracle.com>> wrote:

    Hi Man,

    Adding serviceability as UL is a serviceability feature.


    On 1/12/2017 10:23 AM, Man Cao wrote:

        Hello,

        We (Java Platform Team at Google) found that in JDK9, the file
        generated by
        -XX:+LogVMOutput no longer contains GC log messages, because the
        unified
        JVM logging framework does not use the defaultStream and
        fileStream classes
        and the tty variable. Similarly, related options such as LogFile,
        DisplayVMOutput have no effect on the messages printed by the
        unified
        logging framework.

        The main problem for us is that most of our production Java
        servers use the
        options "-XX:+LogVMOutput -XX:-DisplayVMOutput", to save the GC
        logs and
        other VM messages. These flags would no longer work for JDK9's
        JVM logging
        framework. In addition, the file generated by -XX:+LogVMOutput
        may contain
        information that is not printed by the unified logging framework.

        What is worse is that if LogFile and the output of unified logging
        framework point to the same file, the file may contain partial
        or corrupted
        messages from the unified logging framework. For example,
        consider the
        following command:

        java -Xlog::file=test.log -XX:+UnlockDiagnosticVMOptions
        -XX:+LogVMOutput
        -XX:LogFile=test.log

        Then test.log would miss some of the messages that would be
        printed at the
        beginning if you run "java -Xlog".

        So our questions are:
        1. Do you consider this is a bug for the unified logging
        framework that
        should be fixed? Should the unified logging framework respect these
        diagnostic options?


    My understanding is that UL is intended to replace the legacy
    "logging" flags and works independently of them. So no, UL should
    not respect these flags.

        2. Is there a plan to deprecate these diagnostic options
        (LogVMOutput,
        LogFile, DisplayVMOutput, etc.)? Will the defaultStream,
        fileStream classes
        and the tty variable eventually removed from HotSpot?


    I believe that is the general intent - though complete removal is
    not feasible as UL can't always be used in all contexts. We have
    migrated various subsystems to UL and all new logging should be
    using UL. However I don't believe we actually have active RFEs to
    aggressively complete the switchover.

    Just my 2c.

    David

        Thanks,
        Man


Reply via email to