a

Câu hỏi Làm thế nào tôi có thể sử dụng 'đăng nhập' bên trong một src / groovy / lớp


Tôi gặp phải lỗi này:

groovy.lang.MissingPropertyException:   Không có thuộc tính như vậy: đăng nhập vào lớp:   org.utils.MyClass

Đây là nội dung của lớp:

package org.utils

class MyClass {
    int organizationCount = 0

    public int getOrganizationCount(){
        log.debug "There are ${organizationCount} organization(s) found."
        return organizationCount
    }

}

Tôi có cần thêm câu lệnh nhập không? Tôi cần thêm gì? Lưu ý rằng lớp này nằm trong src / groovy / org / utils. Tôi biết rằng biến 'log' có thể truy cập trong bộ điều khiển, dịch vụ, v.v. Không chắc chắn trong các lớp 'src'.

Cảm ơn.


15
2018-04-05 08:58


gốc




Các câu trả lời:


Trong Groovy 1.8, bạn cũng có thể chú thích lớp bằng @Log (đối với java.util.logging) hoặc @Log4j (đối với log4j) và nó sẽ "kỳ diệu" có log bất động sản. Xem http://docs.codehaus.org/display/GROOVY/Groovy+1.8+release+notes#Groovy1.8releasenotes-@Log để biết chi tiết.

PS .: Nếu bạn sử dụng java.util.logging log.debugcuộc gọi sẽ vẫn không thành công vì không có debug phương pháp.


7
2018-05-06 14:26





Trong grails 3, hệ thống đăng nhập mặc định là logback. Chỉ cần thêm chú thích @ Slf4j vào lớp src / groovy của bạn sẽ xử lý mọi thứ.

import groovy.util.logging.Slf4j

@Slf4j
class MyUtil {

4
2017-07-28 19:54





Biến log được tiêm bởi grails và do đó chỉ có sẵn trong các lớp grails-specific như controller, services, vv - và tôi không nghĩ rằng bạn có thể "import" theo bất kỳ cách nào.

Bên ngoài các lớp này, bạn sẽ chỉ phải sử dụng log4j "thường xuyên", tức là

Logger.getLogger(MyClass.class).debug()

3
2018-04-05 09:23



cảm ơn vì đã dẫn đầu! thật không may, tôi đang gặp sự cố khi sử dụng phương pháp 'gỡ lỗi'. Tôi có ngoại lệ này: Lỗi: Không có chữ ký của phương thức: java.util.logging.Logger.debug () được áp dụng cho các loại đối số: (org.codehaus.groovy.runtime.GStringImpl) giá trị: [Có 15363 tổ chức ( s) tìm thấy.] Tuy nhiên, khi tôi đã cố gắng 'thông tin' cấp, tất cả mọi thứ tìm thấy. Đây là mã mẫu: String s = "Có $ {organizationCount} tổ chức được tìm thấy." Logger.getLogger (this.class.getName ()) Thông tin (s) Lưu ý rằng khi tôi thay thế 'thông tin' với 'debug', tôi có ngoại lệ đó. - firnnauriel
@firnnauriel: có vẻ như bạn đang gặp sự cố với phương pháp gỡ lỗi quá tải so với ma thuật loại của groovy. Hãy thử tạo chuỗi dưới dạng chuỗi Java "truyền thống" bằng cách sử dụng dấu +, thay vì GString. - Michael Borgwardt
Bạn cũng có thể sử dụng Log4j, mà sẽ gọi toString () trên đối số, do đó, nó không quan trọng nếu đó là một GString hoặc String. Chỉ cần import org.apache.log4j.Logger thay vì JUL Logger. - Burt Beckwith


Log4j là một trong những khai thác gỗ tốt nhất

import groovy.util.logging.Log4j

@Log4j
public class MyClass{
//Use for logger check
public static void myMethod(){
    //log.error(null, "This is the log message", throwable)

    //log.error(null, "This is the log message", throwable)

    //log.info("This is the message for info")

    //log.debugg("This is the message for debugging")
}
}

Log4j.properties

# Define the root logger with appender file
log =folderpath
log4j.rootLogger=INFO, R, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%C:%L [%t]  - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${log}/filename.log

log4j.appender.R.MaxFileSize=2048KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern="%d %5p %c{1}:%L - %m%n"
# %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%C:%L [%t]  - %m%n

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

Hy vọng nó sẽ giúp bạn ....


0
2017-07-29 10:13





Vâng, tôi đã làm điều này trong grails 3.1.8 trong đó sử dụng Logback.

import org.apache.commons.logging.LogFactory

public class MyClass{

   static final LOG = LogFactory.getLog(this)

   def function(){
     LOG.debug "Debug message"
   }

   static staticFunction(){
     LOG.debug "Another debug message"
   }
}

0
2018-03-17 12:00