Cách ngăn Firebase ghi nhật ký cập nhật trạng thái khi ứng dụng được khởi chạy


98

Bất cứ khi nào tôi khởi chạy ứng dụng FireBase, nó sẽ ghi lại trạng thái của các tính năng Firebase khác nhau. Ngay bây giờ đây là những gì đang được ghi lại:

Configuring the default app.

<FIRAnalytics/INFO> Firebase Analytics v.3200000 started

<FIRAnalytics/INFO> To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled (see ...)

<FIRAnalytics/INFO> Successfully created Firebase Analytics App Delegate Proxy automatically. To disable the proxy, set the flag FirebaseAppDelegateProxyEnabled to NO in the Info.plist

<FIRInstanceID/WARNING> FIRInstanceID AppDelegate proxy enabled, will swizzle app delegate remote notification handlers. To disable add "FirebaseAppDelegateProxyEnabled" to your Info.plist and set it to NO

<FIRAnalytics/INFO> Firebase Analytics enabled

Tôi đã xem qua các nhóm và không tìm thấy bất kỳ báo cáo in nào, vậy tôi sẽ làm cách nào khác để ngăn chúng được ghi lại ngoài giờ khi tôi chạy ứng dụng?


3
Tôi đồng ý với bạn. Tôi cũng đang tìm cách vô hiệu hóa các tin nhắn.
Gui Moura

1
Bạn đã tìm thấy một phương pháp?
Gilian

Chắc chắn sẽ có trường hợp tắt tin nhắn. Không quan trọng có bao nhiêu người trong số họ được đăng nhập. Tôi không ngại khi nhận được các cảnh báo và lỗi, nhưng các thông báo ban đầu khiến bạn phân tâm, không nghi ngờ gì về điều đó.
Jakub Truhlář

Câu trả lời:


117

Bạn có thể tắt ghi nhật ký gỡ lỗi bằng cờ -FIRDebugDisabled.

Bạn có thể thêm nó vào chương trình của mình :

  1. Chọn Đề án thanh công cụ
  2. Chỉnh sửa lược đồ
  3. Chọn Chạy
  4. Nhấp vào Đối số và thêm -FIRDebugDisabled

1
Ah Tôi đã đăng ký với các kỹ sư - những tin nhắn đó sẽ được ghi lại bất kể. Với lá cờ, đó là tất cả những gì bạn nên thấy.
Ian Barber

20
A -noFIRAnalyticsDebugEnabledđã được đổi tên thành -FIRDebugDisabled. Các bước khác cũng vậy.
Marat Saytakov

3
Không thực sự tốt (điều này có thể sẽ không được thêm vào kho mã, v.v. và do đó sẽ gây ra các mã khác nhau tùy thuộc vào phương pháp xây dựng (nghĩ là chạy / lưu trữ)). Theo mặc định, các bản dựng phát hành phải TẮT nhật ký ... IMHO 😎
Jonny

1
này có tác dụng phụ khủng khiếp biến của chế độ gỡ lỗi cho phân tích căn cứ hỏa lực
Hogdotmac

62

Thêm FirebaseConfiguration.shared.setLoggerLevel(.min)trước FirebaseApp.configure()để đạt được số lượng ghi nhật ký tối thiểu.

func setupFirebase() {
  FirebaseConfiguration.shared.setLoggerLevel(.min)
  FirebaseApp.configure()
}

Điều này thực hiện công việc!
Kyle Goslan

3
Mã đã cập nhật lên FIRConfiguration.sharedInstance (). SetLoggerLevel (.min)
Chrishan

16

Theo mặc định, Firebase sẽ ghi lại thông tin, lỗi và cảnh báo.
Vì vậy, bạn có thể đặt mức ghi nhật ký mà bạn cần.
Nếu bạn đặt cho .Error, bạn sẽ chỉ nhận được nhật ký tối thiểu khi lỗi tích lũy.

setLoggerLevel trước FirebaseApp.configure () như hình dưới đây

Trong Swift 2.3 và Firebase 4

 FirebaseConfiguration.sharedInstance().setLoggerLevel(.Error)
 FirebaseApp.configure()

Trong Swift 3 và Firebase 4

 FirebaseConfiguration.shared.setLoggerLevel(.min)
 FirebaseApp.configure()

Làm thế nào tôi có thể viết mã này trong mục tiêu c, bạn có thể vui lòng cho tôi biết cảm ơn bạn
Yogesh Patel

15

Trong trường hợp của tôi để ẩn phần bổ sung của nhật ký bảng điều khiển khỏi Firebase, tôi đã làm như sau:

  1. Điều hướng đến Sản phẩm -> Lược đồ -> Chỉnh sửa Lược đồ.
  2. Trong tab Đối số trong phần Biến môi trường, hãy thêm OS_ACTIVITY_MODE = vô hiệu hóa

nhập mô tả hình ảnh ở đây

  • Trong trường hợp bạn cần, chỉ cần bỏ chọn hộp.
  • Việc tắt OS_ACTIVITY_MODE đôi khi cũng sẽ tắt nhật ký cho tất cả các trường hợp ngoại lệ

Chỉnh sửa 1 : Như @ jesus-adolfo-rodriguez đã nói, điều này có liên quan đến Xcode. Vì vậy, nếu bạn không muốn OSLog trên bảng điều khiển Xcode, hãy đặt biến Môi trường OS_ACTIVITY_MODE để "vô hiệu hóa" trong lược đồ của bạn.


Chỉnh sửa 2:

FirebaseConfiguration.shared.setLoggerLevel(FirebaseLoggerLevel.min)
FirebaseApp.configure()

Thêm chi tiết về triển khai FIRConfiguration tại đây


Chỉnh sửa 3: 2019

Theo vấn đề này: https://github.com/firebase/firebase-ios-sdk/issues/2774#issuecomment-482780714

Thêm đối số -FIRDebugDisabled và làm sạch dự án đã thực hiện một mẹo nhỏ.

Hệ thống ghi nhật ký trong Firebase

Hệ thống ghi nhật ký có hai chế độ: chế độ mặc định và chế độ gỡ lỗi. Ở chế độ mặc định, chỉ các nhật ký có Thông báo, Cảnh báo và Lỗi ở cấp độ nhật ký mới được gửi đến thiết bị. Ở chế độ gỡ lỗi, tất cả nhật ký sẽ được gửi đến thiết bị. Các cấp nhật ký mà Firebase sử dụng nhất quán với các cấp nhật ký ASL.

Bật chế độ gỡ lỗi bằng cách chuyển đối số -FIRDebugEnabled vào ứng dụng. Bạn có thể thêm đối số này trong lược đồ Xcode của ứng dụng. Khi chế độ gỡ lỗi được bật qua -FIRDebugEnabled, các lần thực thi tiếp theo của ứng dụng cũng sẽ ở chế độ gỡ lỗi. Để trở về chế độ mặc định, bạn phải tắt rõ ràng chế độ gỡ lỗi với đối số ứng dụng -FIRDebugDisabled .

Cũng có thể thay đổi mức ghi mặc định trong mã bằng cách gọi setLoggerLevel: trên giao diện FIRConfiguration.


3
này không có gì để làm với căn cứ hỏa lực
Jesus Rodriguez

và sẽ ẩn phân tích của bạn nếu bạn muốn họ được hiển thị -FIRAnalyticsDebugEnabled
DogCoffee

Điều này đã vô hiệu hóa tất cả các bản ghi cho tôi. Như bạn đã nói ở điểm cuối cùng.
R. Mohan

Nó đã giúp tôi giảm bớt các thư từ Firebase đã được ghi lại mặc dù setLoggerLevel(.min)-FIRDebugDisabled. Câu trả lời chính xác!
kelin

4
Ngừng yêu cầu mọi người tắt tất cả ghi nhật ký.
Claus Jørgensen

7
FIRConfiguration.sharedInstance().setLoggerLevel(.min)
FIRApp.configure()

Trong Swift 4


2
FirebaseConfiguration.shared.setLoggerLevel(.min)trong FB 5.14
Adam Waite

6

Swift 4 Firebase 4.10

Đặt cấp độ ghi nhật ký trong AppDelegate.swift của bạn

FirebaseConfiguration().setLoggerLevel(FirebaseLoggerLevel.min)

Đây là mã đầy đủ:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    FirebaseConfiguration().setLoggerLevel(FirebaseLoggerLevel.min)
    FirebaseApp.configure()
    return true
}

4

Theo mặc định, Firebase Analytics sẽ chỉ ghi lại 4 dòng INFO trong sản xuất + lỗi / cảnh báo. Đó sẽ là rất ít đầu ra nếu mọi thứ hoạt động chính xác. Việc thêm -noFIRAnalyticsDebugEnabled sẽ chỉ vô hiệu hóa nhật ký cấp GỠ LỖI và ERROR / WARN luôn được ghi lại. Nếu bạn thấy bất kỳ cảnh báo hoặc lỗi nào, bạn có thể cần phải làm gì đó để giải quyết nguyên nhân. Một số thứ có thể sẽ không hoạt động chính xác nếu các cảnh báo / lỗi được ghi lại. Ứng dụng được thiết lập đúng cách sẽ không ghi lỗi / cảnh báo.

Các thư được gắn thẻ FIRInstanceID / * được ghi lại bằng Thông báo Firebase và các lỗi / cảnh báo luôn được ghi lại.


3

Như djabi đã nói, bạn không thể vô hiệu hóa các nhật ký đó nếu chúng là THÔNG TIN, CẢNH BÁO hoặc LỖI.

Tôi muốn thêm vào câu trả lời của Nitin Gohel vì tôi không thể nhận xét: Cờ FirebaseAppDelegateProxyEnabled không dùng để tắt nhật ký. Nếu bạn tắt nó, bạn sẽ mất theo dõi chiến dịch tự động và bạn sẽ cần thêm các phương pháp từ FIRAnalytics (AppDelegate) để tự xử lý URL và hoạt động của người dùng.


3

Để thêm vào câu trả lời của Alex, từ https://firebase.google.com/docs/cloud-messaging/ios/client

FirebaseAppDelegateProxyEnabled là để xáo trộn các phương pháp của đại biểu ứng dụng của bạn

API FCM thực hiện thay đổi phương pháp trong hai lĩnh vực chính: ánh xạ mã thông báo APN của bạn với mã thông báo đăng ký FCM và thu thập dữ liệu phân tích trong quá trình xử lý lệnh gọi lại tin nhắn hạ lưu. Các nhà phát triển không muốn sử dụng swizzling có thể vô hiệu hóa nó bằng cách thêm cờ FirebaseAppDelegateProxyEnabled trong tệp Info.plist của ứng dụng và đặt nó thành KHÔNG (giá trị boolean). Các khu vực liên quan của hướng dẫn cung cấp các ví dụ về mã, cả khi có và không bật phương pháp swizzling.


1

Tôi nghĩ rằng có một sự nhầm lẫn lớn và rất quan trọng đang diễn ra.

Bằng cách sử dụng -FIRDebugDisablednó sẽ tắt chế độ gỡ lỗi , sau đó các phép đo của bạn sẽ bị ảnh hưởng trong quá trình thử nghiệm và phát triển .

Để giảm nhật ký:

FirebaseConfiguration.shared.setLoggerLevel(.min)
FirebaseApp.configure()

Tuy nhiên có một lỗi trên phiên bản 6.18 và 6.20.

Một giải pháp khác mà bạn có thể sử dụng -noFIRAnalyticsDebugEnabledlà một giải pháp khác, giải pháp này không tắt chế độ gỡ lỗi của bạn.


lỗi đầu tiên được tạo vào ngày 8 tháng 8 năm 2019 và chưa có bản sửa lỗi: (hy vọng họ sẽ sớm sửa chữa nó. Chúng tôi đã suy nghĩ chuyển sang một công cụ khác, nhật ký này cực kỳ spam
rgkobashi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.