A steady check-engine light with the car driving normally is usually low-urgency, because many of the systems that trigger it - the EVAP system, catalytic converter efficiency, an oxygen sensor heater circuit, EGR flow - do not affect drivability at all. A car can fail any of those checks and still start, idle, and accelerate perfectly normally. That is why the code matters more than how the car feels: get it read (free at most parts stores) and judge urgency by the code's severity rating.
Common no-symptom causes span a loose gas cap or small EVAP leak (very common, Low severity), an aging catalytic converter or lazy oxygen sensor (common, Low), an oxygen sensor heater circuit failure (common, Low), a vacuum leak or dirty airflow sensor running lean (occasional, Moderate), a leaking injector or fuel pressure issue running rich (occasional, Moderate), a stuck-open thermostat (occasional, Low), a carbon-clogged EGR valve (less common, Moderate), and dirty oil affecting a VVT solenoid (less common, Moderate). Three situations deserve more urgency than a symptom-free light suggests: the light starts flashing (an active misfire), it appears alongside a hot temperature gauge or coolant smell, or the code itself is rated High severity even with zero symptoms.