Windows Azure Diagnostics allows applications to log at three levels - application, service, and operating system. Logs can be used for debugging errors and performance issues. Diagnostics faces challenges of scalability and centralized logging in the cloud. It uses hosted services and storage accounts to handle scalability. Roles are configured with diagnostics monitors that log to tables and blobs. This allows per-instance diagnosis. Fluent diagnostics aims to simplify configuration programmatically without verbosity. Diagnostics configuration can be changed at runtime but new instances will use initial settings, so a marker file is needed to prevent resets. Logs can be viewed directly or with tools like Cerebrata Azure Diagnostics Manager.