2013-01-07 34 views
6

Làm cách nào để kiểm soát chức năng ghi nhật ký trong hadoop? Hadoop sử dụng tệp log4j.properties mặc định để kiểm soát nhật ký. Trường hợp sử dụng của tôi là kiểm soát nhật ký được tạo bởi các lớp học của tôi.Kiểm soát chức năng ghi nhật ký trong hadoop

Hadoop daemon như JobTracker, TaskTracker, NameNodeDataNode quá trình daemon sử dụng log4j.properties tập tin từ nút máy chủ tương ứng của họ hadoop-conf-directory. RootLogger được đặt thành “THÔNG TIN, bảng điều khiển” ghi nhật ký tất cả thư ở cấp INFO vào bảng điều khiển.

Tôi kích hoạt công việc hadoop bằng quy trình làm việc Oozie. Tôi đã thử chuyển tệp log4j.properties tùy chỉnh của mình cho công việc bằng cách đặt -Dlog4j.configuration=path/to/log4j.properties thuộc tính hệ thống, nhưng nó không hoạt động. Tuy nhiên, phải mất các thuộc tính log4j từ một thuộc tính mặc định.

Tôi không được phép chạm vào tệp log4j.properties mặc định.

Tôi đang sử dụng Oozie-v3.1.3-incubating, hadoop-v0.20 và cloudera CDH-v4.0.1.

Làm cách nào để ghi đè tệp log4j.properties mặc định? hoặc Tôi làm cách nào để kiểm soát nhật ký cho các lớp học của mình?

Trả lời

10

Cụ thể bạn đang cố gắng đạt được gì với tệp Log4J của riêng mình? Tôi yêu cầu bởi vì các bản ghi được phân phối trên cụm của bạn, nhưng bằng cách đăng nhập chúng vào rootLogger, bạn sẽ có thể nhìn thấy chúng thông qua công việc theo dõi (bằng cách khoan xuống các nỗ lực công việc công việc).

Nếu bạn muốn sử dụng các tệp cuộn thì bạn sẽ gặp khó khăn khi truy xuất các tệp đó sau (một lần nữa vì chúng được phân phối trên các nút tác vụ của bạn).

Nếu bạn muốn tự động thiết lập mức đăng nhập, điều này sẽ được đơn giản đủ:

public static Logger log = Logger.getLogger(MyMapper.class); 

@Override 
protected void setup(Context context) throws IOException, 
     InterruptedException { 
    log.setLevel(Level.WARN); 
} 

Nếu bạn muốn thêm bạn sở hữu appenders, sau đó bạn sẽ có thể làm điều này theo chương trình (xem SO Question này), trong phương thức thiết lập như trên.

+0

Cảm ơn bạn đã trả lời chris :-) Điều đó giúp tôi rất nhiều. – Suresh

+0

Vâng, nó rất hữu ích .. Cảm ơn –

Các vấn đề liên quan