Extracting sql queries from tomcat logs

Girish

I need to develop a JAVA application by following an object oriented design pattern for extracting sql queries from Tomcat logs. I have the log file. I need to extract sql queries from that file. I am new to this field. What are the basics i need to know to do this or give some good references.

As i cant share the whole log file , i am sharing some part of it:

(Dao.java:execute:73) SELECT ORDER_STATUS_TYPE_ID, NAME FROM ORD.ORDER_STATUS_TYPE [DEBUG] [RMI TCP Connection(5)-127.0.0.1 05 Feb 2018 15:00:10] (TraceInterceptor.java:writeToLog:26) []Leaving TypeDaoImpl.getOrderStatusType(): 1062ms: [com.xyz.abc.api.is.model.type.OrderStatusType@2ac9ecc3, com.xyz.abc.api.is.model.type.OrderStatusType@76777395, com.xyz.abc.api.is.model.type.OrderStatusType@6ad8ddb7, com.xyz.abc.api.is.model.type.OrderStatusType@6738868f, com.xyz.abc.api.is.model.type.OrderStatusType@272c15f,

absin

I am posting an answer assuming you cannot edit the DAO.java. If you can edit DAO.java introduce some characters like ||<< to mark the starting and end of a printing query. That way you won't have make an exhaustive list of all the SQL commands.

public static void main(String[] args) throws IOException {
        long start = System.currentTimeMillis();
        FileInputStream inputStream = null;
        Scanner sc = null;
        try {
            inputStream = new FileInputStream("C:\\Users\\absin\\Desktop\\catalina.out");
            sc = new Scanner(inputStream, "UTF-8");
            while (sc.hasNextLine()) {
                String line = sc.nextLine();
                if (line.toLowerCase().contains("select ") || line.toLowerCase().contains("insert ")
                        || line.toLowerCase().contains("update ")) {
                    // DO something with the found log entry
                    System.out.println(line);
                }
            }
            // note that Scanner suppresses exceptions
            if (sc.ioException() != null) {
                throw sc.ioException();
            }
        } finally {
            if (inputStream != null) {
                inputStream.close();
            }
            if (sc != null) {
                sc.close();
            }
        }
        System.out.println("Time taken : " + (System.currentTimeMillis() - start) + " milliseconds");
    }

It prints a lot of log lines with query, and takes ~ 12 seconds on a 40 mb log file. You can also use regex, if you are familiar with them.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

TOP Ranking

  1. 1

    Failed to listen on localhost:8000 (reason: Cannot assign requested address)

  2. 2

    Loopback Error: connect ECONNREFUSED 127.0.0.1:3306 (MAMP)

  3. 3

    How to import an asset in swift using Bundle.main.path() in a react-native native module

  4. 4

    pump.io port in URL

  5. 5

    Compiler error CS0246 (type or namespace not found) on using Ninject in ASP.NET vNext

  6. 6

    BigQuery - concatenate ignoring NULL

  7. 7

    ngClass error (Can't bind ngClass since it isn't a known property of div) in Angular 11.0.3

  8. 8

    ggplotly no applicable method for 'plotly_build' applied to an object of class "NULL" if statements

  9. 9

    Spring Boot JPA PostgreSQL Web App - Internal Authentication Error

  10. 10

    How to remove the extra space from right in a webview?

  11. 11

    java.lang.NullPointerException: Cannot read the array length because "<local3>" is null

  12. 12

    Jquery different data trapped from direct mousedown event and simulation via $(this).trigger('mousedown');

  13. 13

    flutter: dropdown item programmatically unselect problem

  14. 14

    How to use merge windows unallocated space into Ubuntu using GParted?

  15. 15

    Change dd-mm-yyyy date format of dataframe date column to yyyy-mm-dd

  16. 16

    Nuget add packages gives access denied errors

  17. 17

    Svchost high CPU from Microsoft.BingWeather app errors

  18. 18

    Can't pre-populate phone number and message body in SMS link on iPhones when SMS app is not running in the background

  19. 19

    12.04.3--- Dconf Editor won't show com>canonical>unity option

  20. 20

    Any way to remove trailing whitespace *FOR EDITED* lines in Eclipse [for Java]?

  21. 21

    maven-jaxb2-plugin cannot generate classes due to two declarations cause a collision in ObjectFactory class

HotTag

Archive