क्या उन मानों को कंसोल से लेना संभव है: यहां छवि विवरण दर्ज करें और उन्हें जावा सूची/मानचित्र में सहेजें?

मैंने उस लॉग को इस तरह से प्रिंट किया:

logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type=TRACE
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE

मेरी क्वेरी:

@Transactional
public String executeSQL(String[] split){
    SessionFactory hibernateFactory = someService.getHibernateFactory();
    String message = null;
    int rows = 0;
    EntityManager entityManager = hibernateFactory.createEntityManager();
    EntityTransaction utx = entityManager.getTransaction();
    for (int i = 0; i < split.length; i++) {
        String query = split[i];
        try {
            utx.begin();
            Query query1 = entityManager.createNativeQuery(query);
            rows = query1.executeUpdate();
            utx.commit();
            try{
                resultList = query1.getResultList();
                resultList.stream().map(Arrays::toString).forEach(System.out::println);
            }
            catch(Exception e){
            }
            message = "Success \n{ ["+rows+"] <--- affected rows}";
        }catch (PersistenceException e){
            utx.rollback();
            message = (((SQLGrammarException)e.getCause()).getSQLException()).getMessage();
        }
    }
    entityManager.close();
    return message;
}

मुझे पता है कि मूल्यों को सूची में कैसे सहेजना है जैसा कि आप देख सकते हैं लेकिन मैं कॉलम नहीं निकाल सकता ... क्योंकि कॉलम नाम के बारे में कोई जानकारी नहीं है। उस लॉग में कॉलम के नाम होते हैं और कॉलम के प्रकार भी होते हैं, यह जानकारी मेरे लिए उपयोगी होगी।

2
Brarord 19 जिंदा 2020, 20:09

1 उत्तर

सबसे बढ़िया उत्तर

एक विकल्प के रूप में इसे कैसे कार्यान्वित किया जा सकता है लॉगबैक एपेंडर है एक बार जब आप एपेंडर में लॉग इन कर लेंगे तो आप फ़िल्टरिंग और जो कुछ भी आपको चाहिए उसे लागू कर सकते हैं।

1. लॉगबैक-क्लासिक पर निर्भरता जोड़ें

<dependency>
   <groupId>ch.qos.logback</groupId>
   <artifactId>logback-classic</artifactId>
   <version>1.2.3</version>
</dependency>

2. संसाधनों में logback.xml जोड़ें

<configuration>
    <appender name="list" class="com.test.ListAppender"/>
    <root level="info">
        <appender-ref ref="list"/>
    </root>
</configuration>

3. लागू परिशिष्ट वर्ग

package com.test;

import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.AppenderBase;

import java.util.LinkedList;
import java.util.List;

public class ListAppender extends AppenderBase<ILoggingEvent> {

    private static List<ILoggingEvent> eventList = new LinkedList<>();

    @Override
    protected void append(ILoggingEvent event) {
        eventList.add(event);
    }

    public List<ILoggingEvent> getEventList() {
        return eventList;
    }
}

अपने कोड का परीक्षण करें

package com.test;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main {
    private static final Logger logger = LoggerFactory.getLogger(Main.class);

    static ListAppender listAppender = new ListAppender();

    public static void main(String[] args) {
        logger.info("Hello World");
        listAppender.getEventList().forEach(entry -> System.out.println("print log from list:" + entry));
        System.out.println();
    }
}
2
Peter Gyschuk 19 जिंदा 2020, 21:06