As no plan can cover all possible contingencies, the ability to detect failures during plan execution is crucial to the robustness of any autonomous system operating in a dynamic and uncertain environment. In this paper we present a general planning and execution monitoring system where formulas in an expressive temporal logic specify the desired behavior of a system and its environment. A unified domain description for planning and monitoring provides a solid shared declarative semantics permitting the monitoring of both global and operator-specific conditions. During plan execution, an execution monitor subsystem detects violations of monitor formulas in a timely manner using a progression algorithm on incrementally generated partial logical models. The system has been integrated on a fully deployed autonomous unmanned aircraft system. Extensive empirical testing has been performed using a combination of actual flight tests and hardware-in-the-loop simulations in a number of different mission scenarios.