IP Library › Granted Patent US 10,114,830
Granted Patent B2
US 10,114,830 · App. 15/173,237 · Granted Oct 30, 2018

Lazy logger wrappers

Inventors: Daniel Jean-Michel Fuchs (Le Touvet, FR); Mandy L. Chung (Saratoga, CA)
Assignee: Oracle International Corporation
G06F17/30144G06F9/4401G06F9/45558G06F11/30
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,114,830
App. No.
15/173,237
Granted
Oct 30, 2018
Kind
B2
Abstract

The disclosed embodiments provide a method and system for lazily logging events of a software program at various points during the software program's execution. During operation, responsive to receiving one or more events to be logged from a software component during a bootstrap sequence of a virtual machine that the software component executes on, the system queues the one or more events in a particular storage location using a bootstrap logger. Then, subsequent to the completion of the bootstrap sequence, the system activates the subsequent logger, wherein the activation of the subsequent logger is dependent on the completion of the bootstrap sequence. The system then flushes events queued in the particular storage location to the subsequent logger, thereby enabling the subsequent logger to log each of the queued events to a subsequent storage location. Next, the system replaces the bootstrap logger with the subsequent logger.

Claims (62)

1. A computer-implemented method, comprising:

responsive to receiving one or more events to be logged from a software component during a bootstrap sequence of a virtual machine that the software component executes on, queuing the one or more events in a particular storage location using a bootstrap logger, wherein the bootstrap logger is determined by the virtual machine;

subsequent to a completion of the bootstrap sequence:

activating a subsequent logger, wherein the activation of the subsequent logger is dependent on the completion of the bootstrap sequence, wherein the subsequent logger is determined by the software component;

flushing events queued in the particular storage location to the subsequent logger, thereby enabling the subsequent logger to log each of the queued events to a subsequent storage location; and

replacing the bootstrap logger with the subsequent logger; and

responsive to receiving a subsequent event to be logged from the software component, logging the subsequent event to the subsequent storage location using the subsequent logger, wherein events originating from the virtual machine and events originating from the software component are logged by a single logging framework and presented in a unified view.

2. The computer-implemented method of claim 1 :

wherein the method is performed by a logger wrapper that encapsulates the bootstrap logger prior to the replacement of the bootstrap logger with the subsequent logger and encapsulates the subsequent logger after the replacement; and

wherein the replacement of the bootstrap logger with the subsequent logger is initiated by the bootstrap logger.

3. The computer-implemented method of claim 1 :

wherein, prior to the replacement of the bootstrap logger with the subsequent logger, the bootstrap logger performs a check on whether the bootstrap sequence has been completed whenever an event is received from the software component; and

wherein the replacement of the bootstrap logger with the subsequent logger removes the check.

4. The computer-implemented method of claim 1 , wherein flushing the events queued in the particular storage location to the subsequent logger is performed in response to receiving a particular event to be logged from the software component, wherein no events are received from the software component between the completion of the bootstrap sequence and the reception of the particular event.

5. The computer-implemented method of claim 4 , wherein after replacing the bootstrap logger with the subsequent logger, the method further comprises logging the particular event to the subsequent storage location using the subsequent logger.

6. The computer-implemented method of claim 1 , wherein prior to receiving the one or more events to be logged from the software component, the method further comprises:

receiving a first event from the software component, wherein no events are received from the software component prior to the reception of the first event;

determining whether the bootstrap sequence has been completed; and

responsive to determining that the bootstrap sequence has not been completed, activating the bootstrap logger.

7. The computer-implemented method of claim 1 , wherein the particular storage location comprises a first in, first out (FIFO) queue.

8. The computer-implemented method of claim 1 , wherein logging an event to the subsequent storage location using the subsequent logger comprises directly storing the event to at least one of the following:

a plain text log file;

a binary log file; and

a database.

9. An apparatus, comprising:

one or more processors; and

memory storing instructions that, when executed by the one or more processors, cause the apparatus to:

responsive to receiving one or more events to be logged from a software component during a bootstrap sequence of a virtual machine that the software component executes on, queue the one or more events in a particular storage location using a bootstrap logger, wherein the bootstrap logger is determined by the virtual machine;

subsequent to a completion of the bootstrap sequence:

activate the subsequent logger, wherein the activation of the subsequent logger is dependent on the completion of the bootstrap sequence, wherein the subsequent logger is determined by the software component;

flush events queued in the particular storage location to the subsequent logger, thereby enabling the subsequent logger to log each of the queued events to a subsequent storage location; and

replace the bootstrap logger with the subsequent logger; and

responsive to receiving a subsequent event to be logged from the software component, log the subsequent event to the subsequent storage location using the subsequent logger, wherein events originating from the virtual machine and events originating from the software component are logged by a single logging framework and presented in a unified view.

10. The apparatus of claim 9 :

wherein, prior to the replacement of the bootstrap logger with the subsequent logger, the bootstrap logger performs a check on whether the bootstrap sequence has been completed whenever an event is received from the software component; and

wherein the replacement of the bootstrap logger with the subsequent logger removes the check.

11. The apparatus of claim 9 , wherein flushing the events queued in the particular storage location to the subsequent logger is performed in response to receiving a particular event to be logged from the software component, wherein no events are received from the software component between the completion of the bootstrap sequence and the reception of the particular event.

12. The apparatus of claim 11 , wherein after replacing the bootstrap logger with the subsequent logger, the instructions further cause the apparatus to log the particular event to the subsequent storage location using the subsequent logger.

13. The apparatus of claim 9 , wherein prior to receiving the one or more events to be logged from the software component, the instructions further cause the apparatus to:

receive a first event from the software component, wherein no events are received from the software component prior to the reception of the first event;

determine whether the bootstrap sequence has been completed; and

responsive to determining that the bootstrap sequence has not been completed, activate the bootstrap logger.

14. The apparatus of claim 9 , wherein the particular storage location comprises a first in, first out (FIFO) queue.

15. The apparatus of claim 9 , wherein logging an event to the subsequent storage location using the subsequent logger comprises directly storing the event to at least one of the following:

a plain text log file;

a binary log file; and

a database.

16. One or more non-transitory computer-readable storage media storing instructions that when executed by a computer cause the computer to perform a method, the method comprising:

responsive to receiving one or more events to be logged from a software component during a bootstrap sequence of a virtual machine that the software component executes on, queuing the one or more events in a particular storage location using a bootstrap logger, wherein the bootstrap logger is determined by the virtual machine;

subsequent to a completion of the bootstrap sequence:

activating the subsequent logger, wherein the activation of the subsequent logger is dependent on the completion of the bootstrap sequence, wherein the subsequent logger is determined by the software component;

flushing events queued in the particular storage location to the subsequent logger, thereby enabling the subsequent logger to log each of the queued events to a subsequent storage location; and

replacing the bootstrap logger with the subsequent logger; and

responsive to receiving a subsequent event to be logged from the software component, logging the subsequent event to the subsequent storage location using the subsequent logger, wherein events originating from the virtual machine and events originating from the software component are logged by a single logging framework and presented in a unified view.

17. The non-transitory computer-readable storage media of claim 16 :

wherein, prior to the replacement of the bootstrap logger with the subsequent logger, the bootstrap logger performs a check on whether the bootstrap sequence has been completed whenever an event is received from the software component; and

wherein the replacement of the bootstrap logger with the subsequent logger removes the check.

18. The non-transitory computer-readable storage media of claim 16 , wherein flushing the events queued in the particular storage location to the subsequent logger is performed in response to receiving a particular event to be logged from the software component, wherein no events are received from the software component between the completion of the bootstrap sequence and the reception of the particular event.

19. The non-transitory computer-readable storage media of claim 18 , wherein after replacing the bootstrap logger with the subsequent logger, the method further comprises logging the particular event to the subsequent storage location using the subsequent logger.

20. The non-transitory computer-readable storage media of claim 16 , wherein prior to receiving the one or more events to be logged from the software component, the method further comprises:

receiving a first event from the software component, wherein no events are received from the software component prior to the reception of the first event;

determining whether the bootstrap sequence has been completed; and responsive to determining that the bootstrap sequence has not been completed, activating the bootstrap logger.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 22, 2016
From: FUCHS, DANIEL JEAN-MICHEL; CHUNG, MANDY L.
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 038989/0704 →
Continuity (2)
Provisional Application 62233949 · Sep 28, 2015
Related Publication 20170091216A1 · Mar 30, 2017